vs项目的属性设置:
注意属性设置时界面上方的配置(debug,release…),平台(win32,x64…)
包含目录: 寻找#include<xxx.h>中的xxx.h的搜索目录。
库目录: 寻找lib文件的搜索目录。
1:c/c++:
常规->附加包含目录:
作用:用于寻找#include<xxx.h>中的xxx.h的搜索目录,否则报错**“无法打开源文件 xxx.h”**。
2:链接器:
常规->附加库目录:
作用: 寻找lib文件的搜索目录。
输入->附加依赖项:
作用:lib库名(c++的库会把函数,类的声明放在.h中,实现放在cpp中,编译之后cpp会被打包成一个lib文件,这样可以保护源代码)。
c/c++: 常规->附加包含目录 include目录
链接器: 常规->附加库目录 lib库路径
输入->附加依赖项 lib文件名
添加dll时,直接将.dll文件拖拽到生成的.exe所在文件夹下
vs编译时遇到的问题和解决:
无法解析的外部符号例如:__declspec(dllimport)public:virtual __thiscall DeviceComponent::“DeviceComponent(void)” (_imp??1DeviceComponent@@UAE@XZ),改符号在函数“public:virtual __thiscall AI34981BComponent::"AI34981BComponent(void)” ()??AI34981BComponent@@UAE@XZ)中被引用
这个继承来的虚函数在AI34981BComponent项目中被使用,但找不到来源,需要在链接器的输入中添加附加依赖项(相关的lib)
无法解析的外部符号的几种可能:
1:lib文件未引入。可使用“#pragma comment(lib,“winsock.lib”)”语句添加lib引用,也可以在项目依赖里添加。
2:类方法的实现未加类标识,如“CTest::Connect(void){…}”写成"Connect(void){…}”。
3:没有将项目需要的头文件,源文件加入项目中。
4:引用了不匹配的lib库(相当于没有引用),比如多字节字符集的程序引用了UNICODE字符集的lib。
。。。