<tfoot id='uiDt5'></tfoot>

<small id='uiDt5'></small><noframes id='uiDt5'>

    <bdo id='uiDt5'></bdo><ul id='uiDt5'></ul>
    1. <i id='uiDt5'><tr id='uiDt5'><dt id='uiDt5'><q id='uiDt5'><span id='uiDt5'><b id='uiDt5'><form id='uiDt5'><ins id='uiDt5'></ins><ul id='uiDt5'></ul><sub id='uiDt5'></sub></form><legend id='uiDt5'></legend><bdo id='uiDt5'><pre id='uiDt5'><center id='uiDt5'></center></pre></bdo></b><th id='uiDt5'></th></span></q></dt></tr></i><div id='uiDt5'><tfoot id='uiDt5'></tfoot><dl id='uiDt5'><fieldset id='uiDt5'></fieldset></dl></div>

    2. <legend id='uiDt5'><style id='uiDt5'><dir id='uiDt5'><q id='uiDt5'></q></dir></style></legend>

        当我在一台机器上开发一个 EXE 并在另一台机器上

        时间:2023-10-05
            <i id='9VslM'><tr id='9VslM'><dt id='9VslM'><q id='9VslM'><span id='9VslM'><b id='9VslM'><form id='9VslM'><ins id='9VslM'></ins><ul id='9VslM'></ul><sub id='9VslM'></sub></form><legend id='9VslM'></legend><bdo id='9VslM'><pre id='9VslM'><center id='9VslM'></center></pre></bdo></b><th id='9VslM'></th></span></q></dt></tr></i><div id='9VslM'><tfoot id='9VslM'></tfoot><dl id='9VslM'><fieldset id='9VslM'></fieldset></dl></div>
              <bdo id='9VslM'></bdo><ul id='9VslM'></ul>

              <small id='9VslM'></small><noframes id='9VslM'>

              <legend id='9VslM'><style id='9VslM'><dir id='9VslM'><q id='9VslM'></q></dir></style></legend>
                <tfoot id='9VslM'></tfoot>
                    <tbody id='9VslM'></tbody>
                  本文介绍了当我在一台机器上开发一个 EXE 并在另一台机器上运行它时,为什么安装 vcredist_x86.exe 不能修复 SideBySide 错误?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

                  问题描述

                  问题

                  我在 Windows XP Professional Version 2002 Service Pack 3 上使用 Microsoft Visual Studio 2005 Verison 8.0.50727.762 (SP.050727-7600) 编写了一个名为Foo"的 C++ 项目.我将该项目构建到 Foo.exe 中.然后,我将文件 Foo.exe 复制到 Windows Server 2003 Enterprise Edition Service Pack 2.当我尝试运行它时,它失败并出现此错误,

                  I wrote a C++ project called 'Foo' using Microsoft Visual Studio 2005 Verison 8.0.50727.762 (SP.050727-7600) on Windows XP Professional Version 2002 Service Pack 3. I built the project into Foo.exe. Then, I copied the file Foo.exe to a Windows Server 2003 Enterprise Edition Service Pack 2. When I tried to run it, it failed with this error,

                  C:foo.exe
                  The application has failed to start because the application configuration is incorrect.
                  Reinstalling the application may fix the problem.
                  

                  在事件查看器 > 系统中,记录了三个事件.

                  In Event Viewer > System, three events were logged.

                  事件 ID:32;来源:SideBySide

                  Event ID: 32; Source: SideBySide

                  Dependent Assembly Microsoft.VC80.CRT could not be found and Last Error was
                  The referenced assembly is not installed on your system.
                  

                  事件 ID:59;来源:SideBySide

                  Event ID: 59; Source: SideBySide

                  Resolve Partial Assembly failed for Microsoft.VC80.CRT.
                  Reference error message: The referenced assembly is not installed on your system.
                  

                  事件 ID:59;来源:SideBySide

                  Event ID: 59; Source: SideBySide

                  Generate Activation Context failed for C:fooFoo.exe.
                  Reference error message: The referenced assembly is not installed on your system.
                  

                  安装 Microsoft Visual C++ 2005 Redistributable 并没有修复它

                  1. 从 http://www.microsoft.com 下载了 vcredist_x86.exe/download/en/details.aspx?id=3387
                  2. 安装了它.安装程序创建了一个名为 C:windowswinsxsx86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.42_x-ww_0de06acd 的文件夹.
                  1. Downloaded vcredist_x86.exe from http://www.microsoft.com/download/en/details.aspx?id=3387
                  2. Installed it. The installer created a folder called C:windowswinsxsx86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.42_x-ww_0de06acd.

                  从添加或删除程序"中找到的该软件版本为8.0.50727.42".

                  The version of this software as found from 'Add or Remove Programs' was '8.0.50727.42'.

                  在尝试运行 C:foofoo.exe 时,我遇到了与上述相同的错误.

                  On trying to run C:foofoo.exe, I got the same errors I described above.

                  安装 Microsoft Visual C++ 2005 SP1 Redistributable 并没有修复它

                  1. 从 http://www.microsoft.com 下载了 vcredist_x86.exe/download/en/details.aspx?id=5638
                  2. 安装了它.安装程序创建了一个文件夹,名为:C:windowswinsxsx86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.762_x-ww_6b128700.

                  从添加或删除程序"中找到的该软件版本为8.0.56336".

                  The version of this software as found from 'Add or Remove Programs' was '8.0.56336'.

                  在尝试运行 C:foofoo.exe 时,我遇到了与上述相同的错误.

                  On trying to run C:foofoo.exe, I got the same errors I described above.

                  从同一台机器(我正在运行 EXE)复制 CRT DLL 和清单并没有解决问题.

                  1. 我复制了 msvcm80.dllmsvcp80.dllmsvcr80.dllC:WINDOWSWinSxSx86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.42_x-ww_0de06acdC:foo.
                  2. 接下来,我复制了C:WINDOWSWinSxSManifestsx86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.42_x-ww_0de06acd.manifestC:foo 并将其重命名为 Microsoft.VC80.CRT.manifest.
                  1. I copied msvcm80.dll, msvcp80.dll and msvcr80.dll from C:WINDOWSWinSxSx86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.42_x-ww_0de06acd to C:foo.
                  2. Next, I copied C:WINDOWSWinSxSManifestsx86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.42_x-ww_0de06acd.manifest to C:foo and renamed it to Microsoft.VC80.CRT.manifest.

                  清单文件的第四行如下所示:

                  The fourth line of the manifest file looked like this:

                  <assemblyIdentity type="win32" name="Microsoft.VC80.CRT" version="8.0.50727.42"
                                    processorArchitecture="x86"
                                    publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
                  

                  当我这次尝试运行 C:foofoo.exe 时,它​​不起作用.我用 C:windowswinsxsx86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.762_x-ww_6b128700 中的 DLL 和相应的清单文件再次重复了这件事.它也没有帮助.我遇到了同样的错误.

                  When I tried running C:foofoo.exe this time, it didn't work. I repeated this thing again with the DLLs in C:windowswinsxsx86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.762_x-ww_6b128700 and the corresponding manifest file. It didn't help as well. I got the same error.

                  在这两种情况下,我都在事件查看器 > 系统中遇到以下错误.

                  In both cases, I got the following errors in Event Viewer > System.

                  事件 ID:34;来源:SideBySide

                  Event ID: 34; Source: SideBySide

                  Component identity found in manifest does not match the identity of the component requested
                  

                  事件 ID:58;来源:SideBySide

                  Event ID: 58; Source: SideBySide

                  Syntax error in manifest or policy file "C:fooMicrosoft.VC80.CRT.MANIFEST" on line 4.
                  

                  事件 ID:59;来源:SideBySide

                  Event ID: 59; Source: SideBySide

                  Generate Activation Context failed for C:fooFoo.exe. Reference error message: The manifest file contains one or more syntax errors.
                  

                  从 Windows XP 机器(我在其中构建 EXE)复制 CRT DLL 和清单并没有解决问题.

                  1. 我复制了 msvcm80.dllmsvcp80.dllmsvcr80.dllC:winntwinsxsx86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.762_x-ww_6b128700 Windows XP 机器(我在那里开发和构建了 foo.exe)到 Windows Server 2003 的 C:foo(我正在尝试运行 foo.exe).
                  2. 接下来,我复制了C:winntwinsxsManifestsx86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.762_x-ww_6b128700.manifestC:foo 并将其重命名为 Microsoft.VC80.CRT.manifest.
                  1. I copied msvcm80.dll, msvcp80.dll and msvcr80.dll from C:winntwinsxsx86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.762_x-ww_6b128700 of Windows XP machine (where I developed and built foo.exe) to C:foo of Windows Server 2003 (where I am trying to run foo.exe).
                  2. Next, I copied C:winntwinsxsManifestsx86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.762_x-ww_6b128700.manifest to C:foo and renamed it to Microsoft.VC80.CRT.manifest.

                  清单文件的第四行如下所示:

                  The fourth line of the manifest file looked like this:

                  <assemblyIdentity type="win32" name="Microsoft.VC80.CRT" version="8.0.50727.762"
                                    processorArchitecture="x86"
                                    publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
                  

                  在尝试运行 C:foofoo.exe 时,我遇到了上一节中提到的相同错误.

                  On trying to run C:foofoo.exe now I got the same errors mentioned in the previous section.

                  从 Visual Studio 文件夹复制 CRT DLL 和清单修复了它.

                  1. 复制msvcm80.dllmsvcp80.dllmsvcr80.dllMicrosoft.VC80.CRT.manifest> 从 Windows XP 机器的 C:Program FilesMicrosoft Visual Studio 8VC edistx86Microsoft.VC80.CRTC:foo 的 Windows Server 2003 机器(我正在尝试运行它).
                  1. Copied msvcm80.dll, msvcp80.dll, msvcr80.dll and Microsoft.VC80.CRT.manifest from C:Program FilesMicrosoft Visual Studio 8VC edistx86Microsoft.VC80.CRT of Windows XP machine (where I developed and built foo.exe) to C:foo of Windows Server 2003 machine (where I am trying to run it).

                  清单文件的第四行如下所示:

                  The fourth line of the manifest file looked like this:

                  <assemblyIdentity type="win32" name="Microsoft.VC80.CRT" version="8.0.50727.6195"
                                    processorArchitecture="x86"
                                    publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
                  

                  这次我可以毫无问题地运行 C:foofoo.exe.

                  This time I could run C:foofoo.exe without any issues.

                  问题

                  我希望按照第二种方法的描述安装Microsoft Visual C++ 2005 SP1 Redistributable"(vcredist_x86.exe) 会修复它.但它没有.从开发机器的 C:Program FilesMicrosoft Visual Studio 8VC edistx86Microsoft.VC80.CRT 文件夹复制 DLL 和清单文件修复了它.为什么会这样?

                  I was expecting that installing 'Microsoft Visual C++ 2005 SP1 Redistributable' (vcredist_x86.exe) as described in the second approach would fix it. But it didn't. Copying the DLLs and manifest files from the C:Program FilesMicrosoft Visual Studio 8VC edistx86Microsoft.VC80.CRT folder of the development machine fixed it. Why was it so?

                  构建选项

                  以防万一,它可以帮助您回答我的问题.这是我从 Visual Studio 项目属性中选取的编译器和链接器选项:

                  In case, it helps you to answer my question. Here is the compiler and linker options I picked up from Visual Studio project properties:

                  配置属性 > C/C++ > 命令行:

                  Configuration properties > C/C++ > Command Line:

                  /O2/GL/D "_MBCS"/FD/EHsc/MD/Fo"Release\"/Fd"Releasevc80.pdb"/W3/nologo/c/Wp64/Zi/TP/错误报告:提示

                  配置属性>链接器>命令行:

                  Configuration properties > Linker > Command Line:

                  /OUT:"C:MixedBagReleaseFoo.exe"/NOLOGO/MANIFEST/MANIFESTFILE:"ReleaseFoo.exe.intermediate.manifest"/DEBUG/PDB:"c:MixedBag eleaseFoo.pdb"/OPT:REF/OPT:ICF/LTCG/MACHINE:X86/ERRORREPORT:PROMPT kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib

                  推荐答案

                  我会回答我自己的问题.Hans Passant 和 Luke 对问题的评论有所帮助.

                  I'll answer my own question. Comments to the question by Hans Passant and Luke helped.

                  我下载了 Microsoft Visual C++ 2005 Service Pack 1 Redistributable打包 MFC 安全更新 并将其安装在我试图运行 C:foofoo.exe 的系统上.此后 EXE 运行良好.

                  I downloaded Microsoft Visual C++ 2005 Service Pack 1 Redistributable Package MFC Security Update and installed it on the system where I was trying to run C:foofoo.exe. The EXE ran fine after this.

                  安装程序将 CRT DLL 放置在 C:windowswinsxsx86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.6195_x-ww_44262b86.所以,是的,正如 Hans Passant 所说,8.0.50727.6195 是我正在寻找的 CRT DLL 版本.

                  The installer placed the CRT DLLs in C:windowswinsxsx86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.6195_x-ww_44262b86. So, yes, 8.0.50727.6195 was the version of the CRT DLLs I was looking for as Hans Passant rightly said.

                  确定此版本的最简单方法是在开发系统上构建我的项目时查看 Visual Studio 生成的清单文件.我的位于 C:FooReleaseFoo.exe.intermediate.manifest.它有一个这样的标签:

                  The easiest way to figure this version was by looking at the manifest file generated by Visual Studio while building my project on the development system. Mine was located at C:FooReleaseFoo.exe.intermediate.manifest. It had a tag like this:

                  <assemblyIdentity type='win32' name='Microsoft.VC80.CRT' version='8.0.50727.6195'
                                    processorArchitecture='x86'
                                    publicKeyToken='1fc8b3b9a1e18e3b' />
                  

                  所以,这是我需要 8.0.50727.6195 版本的 DLL 的线索.剩下的就是搜索正确的 vcredist_x86.exe,它恰好在我在第二段中提到的 URL 中.该 URL 中的页面包含指向 KB2538242 的链接,该链接显示了将要使用的 DLL 的版本号由安装程序安装.

                  So, this is a clue that I needed 8.0.50727.6195 version of the DLLs. The rest was a matter of searching for the right vcredist_x86.exe which happened to be in the URL I have mentioned in the second paragraph. The page in that URL contains a link to KB2538242 which shows the version numbers of the DLLs that would be installed by the installer.

                  注意:正如 Elie 在这个问题的不同的答案中提到的,因为这是一个 32 位应用程序,无论该系统是 32 位 Windows 系统还是 64 位 Windows 系统,都需要在应该运行此应用程序的系统上安装 vcredist_x86.exe(不是 vcredist_x64.exe)..manifest 文件再次在 processorArchitecture 属性中提供了这个线索.

                  Note: As Elie has mentioned in a different answer to this question, since this is a 32-bit application, it is necessary to install vcredist_x86.exe (not vcredist_x64.exe) on the system where this application is supposed to be run irrespective of whether that system is a 32-bit Windows system or a 64-bit Windows system. Once again, the .manifest file provides this clue in the processorArchitecture attribute.

                  这篇关于当我在一台机器上开发一个 EXE 并在另一台机器上运行它时,为什么安装 vcredist_x86.exe 不能修复 SideBySide 错误?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!

                  上一篇:使用 Win32 API 列出存储在纯资源库 (DLL) 中的消息 下一篇:C++ 模板编译错误:“&gt;"标记之前的预期主

                  相关文章

                  最新文章

                  <tfoot id='neQb3'></tfoot>

                    1. <small id='neQb3'></small><noframes id='neQb3'>

                    2. <i id='neQb3'><tr id='neQb3'><dt id='neQb3'><q id='neQb3'><span id='neQb3'><b id='neQb3'><form id='neQb3'><ins id='neQb3'></ins><ul id='neQb3'></ul><sub id='neQb3'></sub></form><legend id='neQb3'></legend><bdo id='neQb3'><pre id='neQb3'><center id='neQb3'></center></pre></bdo></b><th id='neQb3'></th></span></q></dt></tr></i><div id='neQb3'><tfoot id='neQb3'></tfoot><dl id='neQb3'><fieldset id='neQb3'></fieldset></dl></div>
                      • <bdo id='neQb3'></bdo><ul id='neQb3'></ul>
                      <legend id='neQb3'><style id='neQb3'><dir id='neQb3'><q id='neQb3'></q></dir></style></legend>