在 Visual Studio 2008 中将应用程序构建为发行版时出现问题 - C++

Posted

技术标签:

【中文标题】在 Visual Studio 2008 中将应用程序构建为发行版时出现问题 - C++【英文标题】:Problems Building Application as Release in Visual Studio 2008 - C++ 【发布时间】:2010-12-14 15:30:12 【问题描述】:

我在 Visual Studio 2008 中将我的应用程序构建为 Release 时遇到了一点问题。它构建得很好,没有任何错误或警告作为调试。该应用程序主要是 Win32 和一些 MFC 和 ATL 混合在一起。解决方案中的大多数项目都会生成 LIB 和 DLL。

这是我遇到的错误之一:

致命错误 C1189:#error:使用 /MD[d](CRT dll 版本)构建 MFC 应用程序需要 MFC 共享 dll 版本。请#define _AFXDLL 或不要使用/MD[d]

我的应用程序一个多线程 DLL,所以/MD 需要保留。唯一的 Windows 包括这些:

#include "stdafx.h"
#include "afx.h"
#include "WMIQuery.h"
#include "SerialPort.h"

另一个错误是这样的:

致命错误 C1083:无法打开包含文件:'WMIQuery.h':没有这样的文件或目录

这个对我来说真的没有意义,因为环境没有问题找到这个用于调试的文件。

有谁知道如何解决这个问题?如果需要任何其他信息,请直接说出来,我会发布。谢谢。

【问题讨论】:

发布和调试使用不同的环境,因此能够在调试中找到标头对于在发布模式下找到它没有任何意义。 【参考方案1】:

您为使其在 Debug 配置中构建而进行的项目属性更改也不会自动应用于 Release 配置。请注意对话框左上角的“配置”组合。更改后的属性值以粗体显示。

如果您不记得所做的更改,请在 Notepad.exe 等文本编辑器中打开 .vcproj 文件。已从默认值更改的设置列在 Debug|Win32 配置部分。

【讨论】:

【参考方案2】:

第一个错误很可能是您的项目设置不匹配。由于您需要 /MD,请在“常规”标题下检查您的项目配置属性以进行发布。应该有一个项目“使用MFC”。这应该设置为“在共享 DLL 中使用 MFC”。

第二个错误可能是由于两个配置之间的包含路径不匹配。

【讨论】:

【参考方案3】:

仔细检查您的环境变量。我相信它使用不同的值进行调试和发布。

【讨论】:

以上是关于在 Visual Studio 2008 中将应用程序构建为发行版时出现问题 - C++的主要内容,如果未能解决你的问题,请参考以下文章

在 Visual Studio 2008 中将 Fxcop 错误显示为编译错误

在 Visual Studio 2008 中将目录添加到 CAB 项目

我可以在 Visual Studio 2008 中使用 Visual Studio 6 编译的 C++ 静态库吗?

可以在 Visual Studio 2008 中添加链接文件

在 Visual Studio 2008 中配置 FxCop 以运行规则子集

如何在 Visual Studio 2010 Express 中将 cpp 编译为 dll