0

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

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

4

1 回答 1

3

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

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

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

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

于 2013-09-04T19:34:48.390 回答