【发布时间】:2016-06-21 23:30:05
【问题描述】:
我需要在非 MFC 应用程序(使用标准 Windows 库)中调用 MFC DLL 方法。我得到了一个
"在为 PCH 包含此文件之前包含 'stdafx.h'"
错误。我在所有头文件和 cpp 文件中都包含了 stdafx.h。没有运气。在非 MFC 应用程序中调用 MFC DLL 的过程是什么?
【问题讨论】:
标签: c++ visual-studio mfc linker
我需要在非 MFC 应用程序(使用标准 Windows 库)中调用 MFC DLL 方法。我得到了一个
"在为 PCH 包含此文件之前包含 'stdafx.h'"
错误。我在所有头文件和 cpp 文件中都包含了 stdafx.h。没有运气。在非 MFC 应用程序中调用 MFC DLL 的过程是什么?
【问题讨论】:
标签: c++ visual-studio mfc linker
这个错误与DLL问题无关。或者通过与另一个项目共享 DLL 中的代码的方式。
您设置了一个使用预编译头文件的项目。为每个项目单独设置预编译头文件。你不应该在项目之间共享这样的文件。
设置在没有外部 DLL 引用的情况下编译的项目。 如果它编译添加外部 DLL 接口的头文件(仅此而已),将 LIB 文件添加到链接器选项(或使用#pragma comment(lib,..))。
再次:您的主要问题是您不了解预编译的标头,为了快速尝试,您可以完全关闭它。但我想你分享项目文件的方式有点“混乱”。
【讨论】:
方法一:
您可以在非mfc应用程序中检查项目属性以不使用预编译头。
即Project Properties->Configuration Properties->C/C++->Precompiled Header 并将 Precompled Header Property 设置为“Not Using precompiled Header”如果您在 Visual Studio 中。相当于在编译时去掉 '/Yu' 标志。
方法二: 确保您也在非 mfc 应用程序中使用预编译头文件。
即创建一个预编译的头文件(可以是任何名称,此处为 stdafx.h)并根据需要配置上述属性。 .h 的属性应该是 /Yc。
【讨论】: