建立MFC DLL工程,新建C++类,将第三方库的功能封装到类的接口中,将类导出到dll或者lib中,供其他开发方式使用即可.
Windows的dll相当于Linux的.so文件,是一种动态库文件.与.so不同的是,dll生成后,同目录下也会有.lib文件,并不是静态库文件,只是用来辅助dll链接.
以下是工作要点:
建立MFC Dll工程.
这里:
- 使用共享MFC DLL 的规则DLL
- 带静态链接MFC的规则DLL
- MFC扩展DLL
要选第二个.1是将MFC内部库动态链接,2是将MFC内部库静态链接,3是只给MFC用的DLL.
当然是选第二个.
编写接口.
添加类要注意:
- 类的头文件不要再包含其他头文件,调用其他类可以用类的前置声明.
- 类的头文件使用C++标准语法,不要用BOOL之类的东西.
- 类的头文件,前加条件宏,源文件也要加宏,使头文件两用,这些宏加到文件首.
#ifdef DLL_TEST_API
#else
#define DLL_TEST_API _declspec(dllimport)
#endif
#define DLL_TEST_API _declspec(dllexport)
4. 头文件class和类声明之间加 DLL_TEST_API.
生成动态库或静态库
可以在项目属性中,选择打包为静态库,或动态库.
静态库要拷贝-.lib,动态库要拷贝-.lib和.dll
将库和新建类的头文件一块拷到一个目录下.
Qt调用
使用MSVC编译器版本的Qt,新建Qt窗口工程,工程文件做一些更改:
INCLUDEPATH += F:/extern/include
LIBS += -LF:/extern/dll/xxx -lxxx
可以将拷来头文件的字符编码改一改.
然后包含头文件,就可以用了.