什么是Windows命令行EXE的“并排配置”,如何更正?

时间:2010-08-31 18:23:12

标签: windows configuration side-by-side dll

我有一个用C ++编写的简单.exe(使用Visual Studio 2005构建),它使用提供的API测试某些硬件。它在我构建的Windows 7机器上工作正常,但当我将它复制到另一台(Windows 7)机器并运行它(从命令行)时,我得到:

  

应用程序无法启动   因为它的并排配置   是不正确的。请看看   应用程序事件日志或使用   命令行sxstrace.exe工具   更多细节。

什么是“并排配置”?

我运行了sxstrace.exe并阅读了使用信息。看来我需要检测我的exe来生成sxstrace.exe的日志文件才有用吗?

我想问题是我的exe需要在其他机器上不存在的DLL,或者是错误的版本。我如何找出我的exe使用的DLL,以及它在我的机器上链接到哪个版本(它在哪里工作)?有关将其复制到另一台机器并使其运行的任何其他建议吗?更多信息会有帮助吗?

4 个答案:

答案 0 :(得分:3)

mfawzymkhanswerapplication has failed to start because the side by side configauration is incorrect”问题的spirulence(链接到问题{{3}}中与此问题的答案相关联)似乎适用于此问题问题也。 mfawzymkh写道:

  

您可以通过以下方式解决此问题   其中一个1-安装VC8 Debug CRT   2-将应用程序构建为静态链接

mfawzymkh对同一个答案的评论解释了如何构建静态链接:

  

在VS中构建它时,转到   项目 - >设置 - > C / C ++ - >代码   生成并选择Runtime Lib   选项是/ MTd而不是/ MDd

我做到了,并排配置消息消失了。 (在为我正在使用的DLL安装其他东西之后,我的EXE正常工作。)

答案 1 :(得分:2)

对于它的价值,我遇到了同样的问题。在事件查看器中,我收到一条错误消息:

“C:\\ MyExe.exe”的激活上下文生成失败。第12行的清单或策略文件“C:\\ MyExe.exe.Config”中出现错误。无效的Xml语法。

果然,我改变了连接字符串并省略了结束语。补充说,它解决了这个问题。

答案 2 :(得分:2)

“当你在VS中构建它时,转到项目 - > gt; settings-> C / C ++ - >代码生成并选择运行时库选项为/ MTd而不是/ MDd”为我工作,虽然我是感兴趣的是Release版本而不是Debug版本。

Microsofto说: / MT使您的应用程序使用运行时库的多线程静态版本。定义_MT并使编译器将库名称LIBCMT.lib放入.obj文件中,以便链接器使用LIBCMT.lib来解析外部符号。

/ MD 使您的应用程序使用运行时库的多线程和DLL特定版本。定义_MT和_DLL并使编译器将库名MSVCRT.lib放入.obj文件中。 使用此选项编译的应用程序静态链接到MSVCRT.lib。该库提供了一层代码,允许链接器解析外部引用。实际工作代码包含在MSVCR100.DLL中,该代码必须在运行时可用于与MSVCRT.lib链接的应用程序。

答案 3 :(得分:1)

你是否遇到与这个家伙相同的问题? Side-by-side assemblies, Windows 7, and Visual Studio 2005