windows下C++项目引用其他项目

C++引用其他项目有两种方式,一种是动态链接库(dll(运行时用到) + lib(导入库文件编译时用到)),一种是静态连接库(lib(编译时用到))。动态链接库和静态连接库,是在创建项目的时候选择的,选择静态连接库,编译会生成.lib文件,选择动态链接库项目时,在外部引用的成员前面要加上__declspec(dllexport),不然不会生成.lib导入库,vs2010反正是这样的。

引用的三种方式:

1.如果都是在一个解决方案里面,就项目鼠标右键-->属性-->通用属性-->框架和引用-->增加新引用

2.项目右键属性-->配置属性-->连接器-->输入-->附加依赖项里面加入.lib文件

3.#pragma comment(lib,"xxx.lib")导入.lib文件

上面的.lib文件对于动态和静态两种情况导入方式都是一样的,但两个.lib文件代表的意思不一样,静态链接库明显会比导入库达很多,但动态链接库运行时要要.dll文件在,不然要报错,还有种方法可以区分导入库和静态链接库两种.lib:

在cmd里面输入:lib /list xx.lib

输出很多.obj的是静态链接库,因为静态链接库就是把obj文件打包在一起的

输出很多.dll文件的是导入库,导入库就是告诉程序去相应dll里面找代码

注:当是.c文件调用.cpp文件的dll函数,那么要考虑到c和c++的编译生成函数的名称不一样,这时在cpp函数前面加上extern "C"让用C的方式生成函数名,这样才能正常调用

注:当dll是x64的时候,项目的平台也要是x64,是x86也会出现链接错误

你可能感兴趣的:(C++)