【问题标题】:application has failed to start because the side by side configauration is incorrect应用程序无法启动,因为并排配置不正确
【发布时间】:2010-11-02 09:15:21
【问题描述】:

你好 我使用visualstudio通过c ++创建了一个exe。我创建了一个 com 组件,它发现特定机器上的所有 sqlserver 实例。现在在 c++ 程序中使用 visualstudio 我编写 main() 并使用 com 组件。

现在它应该可以在我的两个 w2k3 机器上工作。当我尝试在 w2k8 机器上运行相同的工作站时,我得到了错误

应用程序无法启动,因为并排配置不正确,详情请参阅应用程序事件错误日志

我打开应用程序错误日志,发现错误为

“E:\SQLDiscovery.exe”的激活上下文生成失败。相关程序集 Microsoft.VC80.DebugCRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="8.0.50608.0" 找不到。详细诊断请使用sxstrace.exe。

如何解决这个问题请帮助我

【问题讨论】:

    标签: c# c++ sql-server visual-c++ windows-server-2008


    【解决方案1】:
    1. 不要发布调试版本。在发布版本中构建它,然后将其放到您的目标机器上。
    2. 如果您使用 CRT(确实如此),那么您需要安装 CRT 可再发行组件。您需要安装(在目标机器上)与您用于构建应用程序的编译器的版本和 SP 相匹配的那些。这是非常简单和标准的做法

    这是一个链接,您可以在其中获取 VC8 的 redist:link 这是 VC8 SP1 的 redist 链接:link text

    只需谷歌“vc8 redist”或您使用的任何版本,您就会找到自己的方式。

    1. 不要为了避免安装 redist 而静态链接您的应用程序。

    【讨论】:

      【解决方案2】:

      问题在于 EXE 需要调试 CRT DLL,并且它们在 2008 机器上不存在。如何解决此问题取决于您想要/需要做什么。

      如果您想使用调试 CRT,要么静态链接到 CRT(无需在 2008 机器上拥有 DLL),要么在与 EXE 相同的目录中创建一个名为“Microsoft.VC80.DebugCRT”的目录,并将必要的 DLL和调试 CRT 清单文件放在那里。

      调试 CRT 不可再分发,AFAIK 除了安装所有 Visual Studio 之外,无法“安装调试 CRT”。

      如果您实际上不需要调试 CRT,请链接到发布版本。同样,您需要在静态 LIB 和 DLL 版本之间进行选择。好消息是发行版 CRT 是可再分发的,请检查您的 Visual Studio 安装目录中的 vcredist_x86.exe

      【讨论】:

        【解决方案3】:

        您必须在 W2k8 上安装 VC8 Runtime。这是由于 Windows 并排配置。 当您构建和执行 EXE 时,会生成一个名为“manifest”的特殊文件,该清单文件描述了您的应用程序正确运行所需的 C 运行时库的版本。
        然后将 Manifest 嵌入到您的 exe/dll 中(如果您实际上使用记事本打开 .dll/exe 并滚动到最后,您将看到 xml 格式),您还可以使用 mt.exe(清单工具)查看任何可执行文件中的清单。

        当您将应用程序移至 W2k8 时,您必须确保安装了依赖的 CRT(除非您将应用程序与 CRT 静态链接)。

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

        也请查看此博客 http://detritus.blogs.com/lycangeek/2006/08/diagnosis_of_wi.html 它包含有关如何调试 winsxs 问题的有用信息。

        希望对你有帮助

        【讨论】:

        • 如果这对您的问题有帮助,请告诉我。
        • 将您的应用程序构建为静态链接 如何做到这一点请告诉我
        • 当你在 VS 中构建它时,转到项目->设置->C/C++->代码生成并选择运行时库选项为 /MTd 而不是 /MDd
        • 请注意,这会增加 DLL/EXE 的大小。让我知道它是否对您有用。谢谢
        • 嗨,工作正常。我有新问题。而不是显示结果,而是显示愚蠢的错误调试错误:程序:c:\ SqlDicovery.exe此程序已请求运行时以异常方式终止它,请联系应用程序支持团队以获取更多信息如何解决此问题
        猜你喜欢
        • 2011-04-27
        • 2011-05-23
        • 1970-01-01
        • 2015-02-08
        • 2021-12-22
        • 2015-08-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多