C/C++ include 目录 库目录

来源:互联网 发布:js设置input的值 编辑:程序博客网 时间:2024/06/12 23:42

为什么出现这个问题

也不知到这个问题该怎么描述,总之用几个关键词来总结吧,C C++ 编译 ,动态库, 静态库,include 目录 lib目录。这些关键词放在一起很不容易解释,但是把他们组合在一起就是我今天遇到的问题。
首先我描述一下我遇到的问题,我经常用C、C++去写一些程序,解决一些算法上的实际问题,并且我的工作环境经常在不同的系统之间切换,平时用win7系统办公娱乐,娱乐当然是守望先锋啦,编程环境必然是visual studio 这款强大的IDE,至于IDE是什么这里就不过多介绍,总之它是一款让编程更加方便快捷的一种软件。C++、C常用的IDE有visual studio 、codeblocks、还有很多编辑器配合插件搭建的环境。当然有很多可以选的,这根据不同人的喜好进行选择,初学者经常会遇到一些这样的问题,比如说不知道C语言和IDE的区别,当初的我开始学习的时候C语言的时候一直以为vc6.0就是C语言,这一点我毫不掩饰,那个时候真是无知,因为我向其学长询问怎样学习C语言的时候,他们总是告诉我先装VC6.0,后来我才明白他们也不知道什么是语言,什么是IDE。幸好,现在我知道了,现在学长可能正在告诉其他学弟先装一个Visual studio。当然这些都是玩笑话,我想说的是有些东西还是要好好理解一下原理的好。
今天我遇到的这个问题其实一直困扰着我,再一次很幸运我今天把这个难题解决了。
从编程最基本的讲起,我们第一次编写c语言的时候,模仿别人写的程序首先要写一行 #inlcude

int max(int a, int b); // 声明 int main() { } int max(int a, int b)  //定义 { if (a > b) return a; else return b;}

从max 函数的声明和定义我们知道函数的内容都在定义中,而声明并不给出函数内容的信息,事实上,函数的声明是告诉计算机函数到哪个位置去寻找。所以我们即便查找stdio.h这个文件也找不到printf\scanf这些对象的实现源代码,因为那里只是声明了一下。曾经我傻傻的以为printf函数怎样实现的方法,就在stdio.h里面写着,后面我才意识到,这种和硬件打交道的接口函数不是我能驾驭的了的,那这些函数在哪里可以找到呢?在计算机上我们不能找到这些函数的C语言或C++源代码,他们以二进制的形式存在于计算机,也就是我们所说的库,windows中经常会遇到的dll文件,linux中的so文件就是库文件,库又分为动态库和静态库这里就不讲他俩的区别,重点不在这里。这些函数被翻译成二进制文件,可以随时调用,当然,二进制文件我们是读不懂了。好了现在我们大致知道include和iostream是怎么一回事,总结一下就是,我们在程序的开始写上#include 我们在程序中就可以调用iostream里面声明的类或者函数,但这些类和函数的定义却不在iostream中,他们在库文件中存在。

当我们调用非C++标准库的时候往往要设置include和lib路径,以Opencv和Visual studio为例,当我们的程序需要用到OpenCV中的函数时,我们首先将OpenCV 库安装到计算机上,然后在Visual studio 的工程中设置Opencv的include路径、lib路径,Include路径就是用来寻找函数的声明,lib路径就是用来寻找函数的定义(二进制文件)。 好了,今天的问题解决了一大半了,剩下的就是系统问题。
我们在windows系统中使用visual studio这款IDE的时候只要安装好库然后配置好环境变量、include目录、lib目录就可以调用库函数了。问题是在linux中如果我没有用IDE,但我又想调用第三方库怎么办呢?怎么办呢?如果不在linux环境下编程的话,下面的内容就不需要看了,太枯燥乏味了。
下一篇我们讨论一下怎么在linux下面编写C++程序,怎样调用非标准库。

原创粉丝点击