VS2012中出现“无法启动程序...debug\abc.exe,系统找不到指定文件”的问题!

VS 2005在生成可执行文件时使用了一种新的技术,该技术生成的可执行文件会伴随生成一个清单文件(manifest
file)(.manifest后缀文件)(其本质上是XML文档,你可以用文本编辑器打开看看),并在链接完成后将该清单文件嵌入到exe文件中(默认情况下)。而在FAT32文件系统中,在处理清单文件阶段,当增量链接时不能完成清单文件的更新(默认情况下),于是造成清单文件嵌入失败,从而使该exe文件运行时没有相应的清单文件而运行失败并提示如上错误。

解决方案很多,列举如下:

1. 由于这是在链接动态运行库出现的问题,所以你可以选择代码生成的连接方式为/MTd而非/MDd,不用这些DLL文件从而避免问题的出现。该方法有一个很显然的缺点:适用范围有限,不推荐该方法。

2. 既然跟FAT32系统有关,那么我们可以选择在NTFS文件系统中开发从而避免该问题,此方法同上,也是采用的回避问题的方式,不提倡。

3. 该方法仍与FAT32有关:在项目的“属性|配置属性|清单工具|常规”中的“使用FAT32解决办法”选择“是”(默认为“否”),重新生成项目即可解决问题。该方法是唯一真正针对问题所在而提出的解决方法,使清单工具可以正确更新。(此方法是官方解决方法,也比较方便,推荐)

4. 既然问题是在更新嵌入的清单文件时发生的,由于FAT32的原因而未能更新嵌入的清单文件,于是我们有如下两种解决方法:

(1)不启用增量链接。在项目的“属性|配置属性|链接器|常规”中的“启用增量链接”选择“否”。此方法阻断了问题产生的源头,其每次生成exe文件时都直接嵌入清单文件,而不是默认的根据时戳而决定是否更新清单文件

(2)不嵌入清单文件。在项目的“属性|配置属性|清单工具|输入和输出”中的“嵌入清单”选择“否”,从而在生成exe文件时附随生成一个清单文件(默认情况下,其文件名为exe文件的全名加上“.manifest”),避免了嵌入清单文件可能失败的问题。在程序运行时,会用到该清单文件。显然,这种方式使可执行程序产生了更多的外部依赖,不推荐。

另外,还有一个不能称为方法的土办法:每次Build前手动删除*.ilk文件(增量链接文件)(当然可以在项目属性中写入删除命令,使其自动执行),不推荐该土办法。

最后,总结一下:

1. 此问题只在特定条件下才会出现:在FAT32文件系统中编译、默认设置(增量模式、不启用FAT32解决方案、嵌入清单文件)、非第一次生成可执行文件文件(即在增量连接、更新清单文件时)。

2. 解决方案1和4.1方便实用,推荐使用。

时间: 2024-09-30 05:30:38

VS2012中出现“无法启动程序...debug\abc.exe,系统找不到指定文件”的问题!的相关文章

无法启动"D\projects\hello\Debug\hello.exe" 系统找不到指定的文件。[LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏]

这两天安装Visual Studio遇到这样的一个问题,用自己的电脑和公司的电脑都出现同样的问题.两台电脑都是新系统,按理来说是没有问题的.但是一出现问题,对于我这个小白来说,还是耗费了挺多精力都无果.今天问公司一个c++同事,他说他也遇到这样一个问题,一百度就给我解决了.之前我真是浪费时间,我使用搜索引擎的方法不对.我是搜索错误提示“无法启动"D\projects\hello\Debug\hello.exe" 系统找不到指定的文件”.而他是搜索“LINK : fatal error

Unable to start program "...\Debug\xxx.exe/".系统找不到指定的文件。

运行某个Demo时,经过了vc6.0->vs2010版本格式转换.运行时弹出框如下: 图1 经查资料为:Link时生成exe文件存放路径跟Debug时调用文件的路径不一样所导致.如下图 图2 图3 经测试为,统一两个路径. 要么在Output FIle处改为.\Debug\CGSnap.exe 或者在Output directory和Intermediate directory处都改为../bin/ ------------------------------------------------

vs 2013 Express 无法启动程序xxx.exe,系统找不到指定文件

由于实验室有人用了含病毒的软件,网管把实验室出口给封了,周末人家又不上班.看样子树莓派是玩不成了,所以昨天在宿舍写windows程序,最基本的窗口程序,听说这段代码初学者至少要自己敲5遍以上.代码如下: #include <windows.h> LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); //之前把这个回调函数的名字写成WinProc,结果编译器总是提示:未定义的标识符 汗!!!! int WINAPI WinMain(HINST

C++错误——”无法启动程序”…\xxx.exe” 系统找不到指定的文件”

背景 在VS2010环境下,升级了一个用C++编写的程序,编译生成成功,但是,不能在VS中直接运行(可以通过打开debug文件目录的exe应用程序运行),提示以下错误:"无法启动程序"-\xxx.exe" 系统找不到指定的文件",如截图1. 截图1 解决方法 1.选择工程,右键单击属性,打开工程的属性页,参考截图2: 截图2 2.选择"配置属性->General",选择output directory ,设置为"inherit f

VS2008出现“无法启动程序,系统找不到指定文件”错误?

vs2008创建C++程序.提示系统找不到指定文件. 1. 工具->选项->项目和解决方案->常规"> Visual Studio项目位置 是否正确. 2. 工具->选项->项目和解决方案->VC++目录.逐行添加: $(SystemRoot)\System32 $(SystemRoot) $(SystemRoot)\System32\wbem

系统找不到指定文件,服务无法启动

例子:mysql 5.1 压缩包版 执行mysqld  --install 以后服务无法启动  可能 在c盘下能执行成功,但是在其他盘是不成功的 服务默认启动路径是c:\program files 这个文件夹,启动服务显示 系统无法找到指定文件, regedit->HEY_LOCAL_MACHINE->SYSTEM->CurrentControlSet->Services->MYSQL(服务名)->ImagePath->修改这个路径 系统找不到指定文件,服务无法启

vs2013编译c程序,出现无法启动程序“.exe”。系统找不到指定文件 0

http://baozoumanhua.com/users/17067203http://baozoumanhua.com/users/17067203/forum_articleshttp://baozoumanhua.com/users/17067203/followingshttp://baozoumanhua.com/users/17067203/talkingshttp://baozoumanhua.com/users/17067203/following_articleshttp:/

tomcat8.0在myeclipse下启动出现系统找不到指定文件的解放方法

1. 找到你的tomcat的安装目录 2. 右击属性->安全目录下,选择你电脑的用户 3. 点击编辑->选择完全控制. 应用就可以了 主要是tomcat这个文件夹,你的用户没有相关的权限导致的 4.然后再在myeclipse里面启动tomcat,启动成功. 版权声明:本文为博主原创文章,未经博主允许不得转载.

VS2013创建Web应用程序MVC出现错误:系统找不到指定文件(异常来自 HRSULT:0x80070002)

查到博客园VS2013新建Web Application时报错Exception from HRESULT: 0x80070002 原来此异常是由于没有正确安装 NuGet Package Manager所导致的. 到下载页面http://visualstudiogallery.msdn.microsoft.com/4ec1526c-4a8c-4a84-b702-b21a8f5293ca进行下载,之后装上它就好了.