摆脱第三方库的MFC绑架

建立MFC DLL工程,新建C++类,将第三方库的功能封装到类的接口中,将类导出到dll或者lib中,供其他开发方式使用即可.

Windows的dll相当于Linux的.so文件,是一种动态库文件.与.so不同的是,dll生成后,同目录下也会有.lib文件,并不是静态库文件,只是用来辅助dll链接.

以下是工作要点:

 建立MFC Dll工程.

这里:

  1. 使用共享MFC DLL 的规则DLL
  2. 带静态链接MFC的规则DLL
  3. MFC扩展DLL

要选第二个.1是将MFC内部库动态链接,2是将MFC内部库静态链接,3是只给MFC用的DLL.

当然是选第二个.

 编写接口.

添加类要注意:

  1. 类的头文件不要再包含其他头文件,调用其他类可以用类的前置声明.
  2. 类的头文件使用C++标准语法,不要用BOOL之类的东西.
  3. 类的头文件,前加条件宏,源文件也要加宏,使头文件两用,这些宏加到文件首.

#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

可以将拷来头文件的字符编码改一改.

然后包含头文件,就可以用了.

猜你喜欢

转载自www.cnblogs.com/ming-crwnt/p/10200962.html