一、在待导出工程中:
1.对导入导出进行宏定义,编写条件编译指令,一般都是单独写在一个.h文件中,格式如下:
#ifndef XX_DEFINE_H
#define XX_DEFINE_H
#ifdef XX_DLL
#define XXAPI __declspec(dllexport)
#else
#define XXAPI __declspec(dllimport)
#endif
#endif
其中:
#ifdef XX_DLL //如果有宏定义XX_DLL
#define XXAPI __declspec(dllexport) //定义XXAPI为导出
#else //否则
#define XXAPI __declspec(dllimport) //定义XXAPI为导入
2.给待导出工程添加宏定义XX_DLL:
工程->属性->配置属性->C/C++->预处理器->预处理器定义:添加XX_DLL。
3.编译待导出工程。
二、在待导入工程中:
1.将待导出工程生成的.dll拖拽到待导入工程的生成目录下(即待导入工程的.exe所在文件夹),或者直接将两者的生成目录设置成同一目录。
2.修改待导入工程的属性:
工程->属性->配置属性->C/C++->常规->附加包含目录:添加.h所在文件夹
工程->属性->配置属性->C/C++->预处理器->预处理器定义:添加宏定义
工程->属性->配置属性->链接器->常规->附加库目录:添加.lib所在文件夹
工程->属性->配置属性->链接器->输入->附加依赖项:向lib库中添加附加库目录中引入的xxxx.lib
注意:
1.通过导入导出的方式无需添加现有项。
2.如果是Qt Application,当从外部添加现有项到工程时,Generated Files->Debug下的*.moc文件的默认编译器会变成C/C++编译器,应该改为自定义生成工具,同时修改其命令行、说明、输出和附加依赖项。
3.在待导入工程中使用时,直接声明导出的类即可,注意命名空间。