【问题标题】:What is a Windows command-line EXE's "side-by-side configuration" and how do I correct it?什么是 Windows 命令行 EXE 的“并行配置”,如何更正它?
【发布时间】:2010-08-31 18:23:11
【问题描述】:

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

应用程序启动失败 因为它的并排配置 是不正确的。请参阅 应用程序事件日志或使用 命令行 sxstrace.exe 工具 更详细。

什么是“并行配置”?

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

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

【问题讨论】:

    标签: windows configuration side-by-side dll


    【解决方案1】:

    mfawzymkhanswer 到“application has failed to start because the side by side configauration is incorrect”问题(链接到问题spirulence 链接到他对这个问题的回答)似乎也适用于这个问题。 mfawzymkh 写道:

    您可以通过以下任一方式解决此问题 其中之一 1- 安装 VC8 调试 CRT 2- 将您的应用构建为静态链接

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

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

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

    【讨论】:

      【解决方案2】:

      不管怎样,我遇到了同样的问题。在事件查看器中,我收到一条错误消息:

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

      果然,我更改了连接字符串并省略了结束引号。将其重新添加并解决了问题。

      【讨论】:

        【解决方案3】:

        “当你在 VS 中构建它时,转到项目->设置->C/C++->代码生成并选择运行时库选项为 /MTd 而不是 /MDd”对我有用,尽管我对发布版本而不是调试版本。

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

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

        【讨论】:

          【解决方案4】:

          你和这个人有同样的问题吗? Side-by-side assemblies, Windows 7, and Visual Studio 2005

          【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-08-18
          • 2014-04-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-04-16
          • 1970-01-01
          • 2022-08-02
          相关资源
          最近更新 更多