错误:“BLAH.EXE”中的并排配置信息被删除 包含错误
这是 Dependency Walker 在我使用 VC++ 2005 Express Edition 构建的可执行文件时给出的错误。 当尝试运行 .exe 时,我得到:(
This application has failed to start because the application configuration
is incorrect. Reinstalling the application may fix this problem.
我对 VC++ 2003 后的清单/SxS/等处理方式很陌生。)
编辑: 我在构建 .exe 的同一台机器上运行。 在事件查看器中,我有无用的:
Faulting application blah.exe, version 0.0.0.0, faulting module blah.exe,
version 0.0.0.0, fault address 0x004239b0.
This is the error Dependency Walker gives me on an executable that I am building with VC++ 2005 Express Edition. When trying to run the .exe, I get:
This application has failed to start because the application configuration
is incorrect. Reinstalling the application may fix this problem.
(I am new to the manifest/SxS/etc. way of doing things post VC++ 2003.)
EDIT:
I am running on the same machine I am building the .exe with. In Event Viewer, I have the unhelpful:
Faulting application blah.exe, version 0.0.0.0, faulting module blah.exe,
version 0.0.0.0, fault address 0x004239b0.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
打开项目的属性表,转到配置属性 -> C/C++-> 代码生成页面,并将运行时库选择更改为 /MT 或 /MTd,以便您的项目不使用 DLL 运行时库。
VS2003 及更高版本使用的 C/C++ DLL 运行时不会随最新版本的操作系统自动分发,如果没有此类问题,安装和运行起来确实很痛苦。 静态链接 c 运行时,避免清单和特定于版本的运行时 dll 造成的混乱。
Open the properties sheet for your project, go to the Configuration Properties -> C/C++ -> Code Generation page, and change the Runtime Library selection to /MT or /MTd so that your project does not use the DLL runtime libraries.
The C/C++ DLL runtimes used by VS2003 and up are not automatically distributed with the latest version of the OS and are a real pain to install and get working without this kind of problem. statically link the c-runtime and just avoid the total mess that is manifests and version specific runtime dlls.
我遇到过这个问题。 该解决方案分为两个步骤:
1. 在“发布”模式而不是“调试”模式下编译程序(工具栏中通常有一个组合框)
2. 从 Microsoft 下载 可再发行组件运行时组件的包。 请确保下载适用于 32 位计算机的 x86 版本和适用于 64 位计算机/操作系统的 x64 版本。 在目标计算机上安装此软件包,您的应用程序应该可以正常
运行 这是一个 SxS 的东西
PPS 或者,使用不同的编译器(例如 GCC,例如使用 Dev-Cpp)来编译程序源代码,您的头痛就会消失。
I've had this problem. The solution has two steps:
1. Compile your program in "Release" mode instead of "Debug" mode (there's usually a combo-box in the toolbar)
2. Download from Microsoft their Redistributable Package of runtime components. Make sure to download the x86 edition for 32-bit computers and the x64 edition for 64-bit computers/OSes. Install this package on the target computer, and your application should run fine
P.S. This is a SxS thing
P.P.S. Alternatively, use a different compiler (like GCC, for example with Dev-Cpp) to compile your program's source, and your headaches will disappear.
很抱歉碰到一个老问题,但我能够解决这个确切的问题,并认为我会发布一个解决方案,以防其他人需要它...
即使在安装了 Microsoft 的可再发行 DLL 后,我仍然收到此错误,修复方法是 将文件夹复制
到目标 PC 上的应用程序目录中。 之后,就没有更多问题了。
顺便说一句,给我带来问题的 DLL 是一个第 3 方 DLL,之前在 100 多台其他计算机上从未出现过问题......想想吧。
Sorry to bump an old question, but I was able to get around this exact issue and thought I'd post a solution in case someone else needs it...
Even after installing Microsoft's redistributable DLLs I was getting this error, the fix was to copy the
folder into the application's directory on the target PC. After that, no more problems.
BTW, the DLL that was giving me issues was a 3rd-party DLL that had never had problems before on over 100 other computers... go figure.
运行事件查看器:它将提供更多信息。
您可能尝试在未安装 VC 可再发行组件的计算机上运行程序,或者尝试在未安装 Visual Studio 的计算机上运行调试版本(调试库未安装)可重新分发)。
Run Event Viewer: it'll have more information.
Probably you've attempted to run your program on a machine that doesn't have the VC redistributables installed, or you're attempting to run a debug build on a machine that doesn't have Visual Studio installed (the debug libraries aren't redistributable).
我在其他 winxp sp3 机器上使用 VS 2008 构建的调试二进制文件也遇到了同样的问题。
该问题是由于 vc redist 包没有安装 dll 的调试版本而引起的,他们以某种方式认为这取决于程序员来解决。
I have had the same issue with VS 2008-built debug binaries on other winxp sp3 machines.
The problem was caused due to the fact that the vc redist package did not install debug versions of dlls, they somehow thought its up to the programmer to figure out.