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

Is it safe to use a win32 dll in an mfc application?

本文关键字:win32 dll 是否 安全 mfc 应用程序      更新时间:2023-10-16

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

这会导致内存泄漏或出现异常行为吗?还是安全?

MFC是在Windows API之上实现的。MFC应用程序可以在没有任何限制的情况下调用Windows API。然而,在包括afxwin.h之前不可能(也不要求)#include <windows.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,则需要确保它包含在afxwin.h之后。否则,预处理器将错误地显示上面引用的消息。