C++类的导入导出

一、在待导出工程中:

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.在待导入工程中使用时,直接声明导出的类即可,注意命名空间。



你可能感兴趣的:(QT)