我们在编写程序时,,不可避免的会使用第三方的库文件,很少使用源文件(.cpp),大部分是使用对类进行声明的头文件和封装了类的链接库(静态lib或动态dll),比如我们写程序用的iostream这个库,当然这个是已经设置好的官方的库,让我们使用某个第三方的库时,需要自己来进行配置。
C++的库会把函数、类的声明放在*.h中,实现放在*.cpp或*.cc中。编译之后,*.cpp,*.cc,*.c会被打包成一个.lib文件,这样可以保护源代码。
所以,要使用一个库,除了要include他的头文件以外,还要在链接过程中把lib加进去。
主要有两种办法:
第一种:我们可以将我们所需要的库文件(.lib),已经该头文件(.h)拷贝到我们程序的目录下,其实只要拷贝到程序目录下即可,因为编译时,编译器会自动会在项目所在的文件里逐个搜素,若我们使用的库文件存在动态链接文件时,一般我们把它拷贝到我们程序可执行文件所存在的文件中,这样我们就可以在我们的程序中使用。
但是有个缺点,假若我们需要使用的库文件太多,这样拷贝会比较麻烦,效率比较低。我们可以使用第二种方法。
第二种:我们可以在我们的程序中加载我们所需要的库文件,从而不需要拷贝到自己程序的目录下。我们以一个例子来说明,我现在要在程序中引用sqlite数据库的API函数
举例:
新建项目:zrl(随便起的),这里仅仅是演示,所以我们新建一个空工程,运行一下(产生可执行文件)
1 添加文件引用的lib静态库路径:工程---属性---配置属性---链接器---常规---附加库目录:加上lib文件存放目录。(注意:这个文件的存放目录指的是你的库文件所放的最后一级的目录,一定不要带上你的文件名,这里仅仅指的是存放”库文件所在文件目录”,下同)
2 然后添加工程引用的lib文件名:工程---属性---配置属性---链接器---输入---附加依赖项:加上lib文件名,这个步骤等同于在程序中添加 #pragma comment(lib,“xxx.lib”)
3添加工程的头文件目录:工程---属性---配置属性---c/c++---常规---附加包含目录:加上头文件存放目录。 此例子中:
4添加工程引用的dll动态库:把引用的dll放到工程的可执行文件所在的目录下。
或者我们也可以不添加附加库目录,附加包含目录这两个,我们也可以在 工程---属性---配置属性---VC++属性—包含目录 添加 头文件所在的文件目录。
在工程---属性---配置属性---VC++属性—库目录 添加库目录所在的文件目录。但此时仍要设置附加依赖项(和上面一样)。
同时总结一下在引用第三方库时所出现问题:
1若附加链接库中设置错误(拼写错误等),或者既没有添加也没有使用#pragmacomment(lib,"xxx.lib") 来设置
这个过程出错会出现link error,大概是“未定义的函数XXX”。
2库目录错误:就是寻找.lib文件的目录。如果设置错误,会link error,提示"找不到XXX.lib"。
原文链接:https://www.f2er.com/sqlite/199968.html