在 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 中添加链接文件