为啥我用VS2010调试程序时出现错误未能在指定文件夹中找到.exe
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥我用VS2010调试程序时出现错误未能在指定文件夹中找到.exe相关的知识,希望对你有一定的参考价值。
处理计划很多,罗列如下:
1. 由于这是在链接动态运转库呈现的问题,所以你能够选择代码生成的衔接方式为/MTd而非/MDd,不用这些DLL文件从而防止问题的呈现。该办法有一个很显然的缺陷:适用范围有限,不引荐该办法。
2. 既然跟FAT32系统有关,那么本人们能够选择在NTFS文件系统中开发从而防止该问题,此办法同上,也是采用的逃避问题的方式,不倡导。
3. 该办法仍与FAT32有关:在项目的“属性|配置属性|清单工具|常规”中的“运用FAT32处理方法”选择“是”(默许为“否”),重重生成项目即可处理问题。该办法是独一真正针对问题所在而提出的处理办法,使清单工具能够正确更新。(此办法是官方处理办法,也比拟便当,引荐)
4. 既然问题是在更新嵌入的清单文件时发作的,由于FAT32的缘由而未能更新嵌入的清单文件,于是本人们有如下两种处理办法:
(1)不启用增量链接。在项目的“属性|配置属性|链接器|常规”中的“启用增量链接”选择“否”。此办法阻断了问题产生的源头,其每次生成exe文件时都直接嵌入清单文件,而不是默许的依据时戳而决议能否更新清单文件。
(2)不嵌入清单文件。在项目的“属性|配置属性|清单工具|输入和输出”中的“嵌入清单”选择“否”,从而在生成exe文件时附随生成一个清单文件(默许状况下,其文件名为exe文件的全名加上“.manifest”),防止了嵌入清单文件可能失败的问题。在程序运转时,会用到该清单文件。显然,这种方式使可执行程序产生了更多的外部依赖,不引荐。
另外,还有一个不能称为办法的土方法C拦畚Build前手动删除*.ilk文件(增量链接文件)(当然能够在项目属性中写入删除命令,使其自动执行),不引荐该土方法。
最后,总结一下:
1. 此问题只在特定条件下才会呈现:在FAT32文件系统中编译、默许设置(增量形式、不启用FAT32处理计划、嵌入清单文件)、非第一次生成可执行文件文件(即在增量衔接、更新清单文件时)。
2. 处理计划1和4.1便当适用,引荐运用。
这几个办法试过没用
你试试这个,不行的话,就只有重新建个项目啦
以前出下过这个问题,忘了怎么解决了,后来干脆重新建个项目追问
在项目的“属性|配置属性|清单工具|常规”中没有“运用FAT32处理方法 这个选项
追答试试在配置属性|常规|输出目录 改一下,看看行不行,我记得以前是这样弄得
参考技术A 这个我没出现过为啥使用 gdb 启动 C++ 程序时出现分段错误?
【中文标题】为啥使用 gdb 启动 C++ 程序时出现分段错误?【英文标题】:Why do I have a segmentation fault when starting my C++ program with gdb?为什么使用 gdb 启动 C++ 程序时出现分段错误? 【发布时间】:2014-05-23 16:34:44 【问题描述】:我有一个 g++ 项目,想使用 gdb 对其进行调试。以程序作为参数打开 gdb 会产生以下输出:
Reading symbols from <my_app_name>...Segmentation fault (core dumped)
编译标志
-c -Wall -Werror -Wfatal-errors -Wpedantic -std=c++11 -g
链接标志
-lssl -lcrypto -pthread -luuid -rdynamic
我的可执行文件大小为 2,141,712,其中包含调试信息 “top 命令”显示 3,417,168 个可用内存。
$ g++ --version
g++ (Ubuntu 4.8.2-19ubuntu1) 4.8.2
$ gdb --version
GNU gdb (Ubuntu 7.7-0ubuntu3.1) 7.7
我过去在gdb方面的经验有限,我打算在这个项目中使用gdb,不幸的是,由于我的可执行文件启动时gdb分段错误,调试体验会很困难。有人可以帮忙吗?
我也问过这个问题Ask Ubuntu,但我的问题在那里结束了,因为它更适合 Stack Overflow。
【问题讨论】:
【参考方案1】:乍一看:
您的编译标志似乎缺少前导破折号:
-c std=c++11 -g
应该是:(add leading dash in front of std=c++11
)
-c -std=c++11 -g
您的链接标志:
-lssl -lcrypto -pthread -luuid -std=c++11-rdynamic
应该是:(add space between -std=c++11 and -rdynamic
)
-lssl -lcrypto -pthread -luuid -std=c++11 -rdynamic
请注意,您不需要两次使用 -std=c++11
选项(配置和链接标志)。
使用更新的标志再试一次。
【讨论】:
抱歉@iomix,我在重新复制 CXXFLGS 时输入了一个错字。我已经用正确的标志编辑了原始问题。在 -std=c++11 之前,我确实有领先优势。我还从链接标志中删除了 -std=c++11,感谢您的提示。仅供参考,删除链接标志 -std=c++11 后,我仍然会收到从 gdb 加载项目的段错误。以上是关于为啥我用VS2010调试程序时出现错误未能在指定文件夹中找到.exe的主要内容,如果未能解决你的问题,请参考以下文章
重装VS2010时出现未能正确加载 "radlangsvc.package,radlangsvc.vs...
c#开发的winform程序,发布的x64的程序在x64电脑安装时出现未能找到vcredist_x64.exe错误
关于在vs2010中编译Qt项目时出现“无法解析的外部命令”的错误
vs2010调试时出现clr.dll的版本与生成mscordacwks.dll时针对的clr.dll的版本不匹配,请高手帮下忙?