2009-05-28 67 views
0

此应用程序未能启动 ,因为应用程序配置 不正确。重新安装 应用程序可能会解决此问题。
在测试香草机上测试visual c.exe不会启动

这是我所得到的,当我尝试在系统上我调试文件,无需安装Visual Studio。 我试图将Debug_NonRedist \ x86 \ Microsoft.VC90.DebugCRT复制到与我的exe文件相同的文件夹中,但没有运气。

  • dll在Microsoft.VC90.DebugCRT文件夹中的exe文件夹中。
  • DLL在同一个exe文件夹和DLL。


我也安装了“Microsoft Visual C++ 2008 Redistributable Package”。

回答

1

最简单解决办法是用静态链接而不是动态链接来编译你的exe文件。

用Visual Studio打开您的项目。

从菜单中选择项目 - >属性(或右键单击该项目并选择“属性:从Solution Explorer)

从标签树控件:配置属性:C/C++:代码代

更改“运行时库”设置从“多线程调试DLL(/ MDD)”到“多线程调试(/ MTD)”
重建,重新复制,并且所有shoudl好


否则,另一种解决方案是实际构建捆绑VC9运行时位的MSI。生成安装项目,包括这些MSM合并模块:

“C:\ Program Files文件\ Common Files文件\合并模块\ Microsoft_VC90_DebugCRT_x86.msm”
“C:\ Program Files文件\ Common Files文件\合并模块\ policy_9_0_Microsoft_VC90_DebugCRT_x86.msm “

(如果您正在运行64位,这些文件是在您的 ”C:\ Program Files文件(x86)的“ 目录)


最后,如果这也不行,你可能得到一些其他DLL(MFC?),可能也需要复制。我相信,当你得到“应用程序配置不正确”错误时,你可以看看系统事件日志(控制面板 - >管理工具 - >事件查看器)。通常有关于缺少DLL的详细错误消息。

+0

然后我的程序崩溃,因为我有一个DLL使用crt和我从它收到的免费东西。 – CiNN 2009-05-28 09:20:49

+0

那东西从哪里来?使用动态调试CRT不会解决这个问题,除非这些东西是从它开始分配的。 – 2009-05-28 15:26:56

2

调试CRT不可分配。 “Microsoft Visual C++ 2008可再发行组件包”不包含调试CRT。应用程序有一个自动生成的清单,告诉操作系统从SxS系统加载调试CRT。

请参阅this CodeProject article了解使用专用程序集的方法,以便您的应用程序使用您手动复制到其他系统的调试CRT dll。

0

我会建议做一个发布版本,并试图在香草机(以及该机器上安装的Microsoft Visual C++ 2008可再发行组件包),并看看是否有效。

很可能您的应用程序也使用了您可能尚未复制的MFC和C++ DLL。即MFC90D.DLL,MSVCR90D.DLL,MSVCP90D.DLL