在mfc应用程序中使用win32 dll是否安全?

时间:2013-09-04 17:30:11

标签: c++ winapi mfc

我有一个包含Windows.h的win32 DLL,并使用了Windows API。我想将此DLL加载到使用MFC的应用程序中。

这会导致任何内存泄漏或奇怪的行为吗?还是安全的?

1 个答案:

答案 0 :(得分:3)

MFC是在Windows API之上实现的。 MFC应用程序可以不受任何限制地调用Windows API。但是,在包含#include <windows.h>之前,afxwin.h不可能(也不需要)。如果您这样做,afxv_w32.h将会出现以下错误:

  

WINDOWS.H已包含在内。 MFC应用不得#include <windows.h>

这背后的原因不是兼容性问题。这是因为MFC必须设置几个预处理器符号来控制编译过程的某些方面。必须在包括windows.h之前定义这些符号(afxv_w32.h最终确实包含这些符号)。

同样,链接与使用Windows API实现的.dll没有任何问题。实际上,默认的MFC应用程序已经链接到许多Windows API库,例如kernel32.dlluser32.dll。如果声明.dll导出的头文件包含windows.h,则需要确保在afxwin.h之后包含该文件。否则,预处理器将使用上面引用的消息错误输出。