在非 MFC 应用程序中链接 MFC dll

Linking a MFC dll in a non MFC application

本文关键字:MFC dll 链接 应用程序 在非      更新时间:2023-10-16

我需要在非MFC应用程序中调用MFC DLL方法(使用标准Windows库)。我得到了一个

"在为 PCH 包含此文件之前包含'stdafx.h'"

错误。我已经将stdafx.h包含在我所有的头文件和cpp文件中。没有运气。在非 MFC 应用程序中调用 MFC DLL 的过程是什么?

此错误与

DLL问题无关。或者使用与另一个项目共享 DLL 中的代码的方法。

设置使用预编译标头的项目。为每个项目单独设置预编译标头。切勿在项目之间共享此类文件。

设置在没有外部 DLL 引用的情况下编译的项目。如果它编译添加外部 DLL 接口的头文件(仅此而已),请将 LIB 文件添加到链接器选项(或使用 #pragma 注释 (lib,..))。

再次:你的主要问题是你不理解预编译的头,为了快速尝试,你可以完全打开它。但我想你分享项目文件的方式有点"混乱"。

方法 1:

您可以在非 mfc 应用程序中检查项目属性,使其不使用预编译标头。

即项目属性->配置属性->C/C++->预编译标头,并将预编译标头属性设置为"不使用预编译标头"(如果您在视觉工作室中)。这相当于在编译时删除了"/Yu"标志。

方法2:确保在非 mfc 应用中也使用预编译标头。

即创建一个预编译的标头(可以是任何名称,此处为 stdafx.h)并根据需要配置上述属性。.h 的属性应为/Yc。