① vs2008编译成功,生成mt.exe时出错
建议把编译时输出的错误信息全部贴上来,你给的信息太少,大家只能猜
请看看你的项目设置中的“生成事件”下的几个选项中的“命令行”项内容是否正确,把它清空试试
附MSDN解释:
Visual C++ 概念:生成 C/C++ 程序
项目生成错误 PRJ0003
错误消息
生成“command line”时出错。
由“属性页”对话框中的用户输入形成的命令 command line 返回了一个错误代码,但输出窗口中不显示任何信息。
此错误的可能原因为:
项目依赖于 ATL Server。从 Visual Studio 2008 开始,ATL Server 不再包括在 Visual Studio 中,但已在 CodePlex 作为共享源代码项目发布。若要下载 ATL Server 源代码和工具,请转到 http://go.microsoft.com/fwlink/。
系统资源不足。关闭一些应用程序以解决此问题。
没有足够的安全特权。验证是否有足够的安全特权。
VC++ 目录中指定的可执行路径不包括您正尝试运行的工具的路径。
对于生成文件项目,缺少要在“生成命令行”或“重新生成命令行”上运行的命令。
② 绯荤粺鍑虹幇钬滆祫婧愪笉瓒崇殑鎻愮ず钬濓纴鏄镐庝箞锲炰簨锛
鎴戜滑鍦ㄤ娇鐢ㄧ数鑴戠殑杩囩▼涓锛屽傛灉浣犵郴缁熺殑閰岖疆涓嶆槸寰堥珮锛岄偅涔堢粡甯稿彲鑳戒细鍑虹幇绯荤粺璧勬簮涓嶈冻镄勬彁绀猴纴褰撶劧閰岖疆浠ュ栫殑鍏跺畠𨱍呭喌涔熶细阃犳垚绯荤粺璧勬簮镄勪笉瓒炽傞溃瀵圭郴缁熻祫婧愪笉瓒崇殑𨱍呭喌鎴戜滑搴旇ユ庝箞澶勭悊锻?璇风湅涓嬮溃镄勪竷绉嶆柟娉曘 1. 娓呴櫎钬滃壀璐存澘钬濄傚綋钬滃壀璐存澘钬濅腑瀛樻斁镄勬槸涓骞呭浘鐢绘垨澶ф垫枃链镞讹纴浼氩崰鐢ㄨ缉澶氩唴瀛樸傝锋竻闄も滃壀璐存澘钬濅腑镄勫唴瀹癸纴閲婃斁瀹冨崰鐢ㄧ殑绯荤粺璧勬簮:鍗曞嚮钬滃紑濮嬧濓纴鎸囧悜钬灭▼搴忊濓纴鎸囧悜钬滈梼浠垛濓纴鎸囧悜钬灭郴缁熷伐鍏封濓纴鍗曞嚮钬滃壀璐存澘镆ョ湅绋嫔簭钬濓纴铹跺悗鍦ㄢ灭紪杈戋濊彍鍗曚笂锛屽崟鍑烩滃垹闄も濆懡浠ゃ 2. 閲嶆柊钖锷ㄨ$畻链恒傚彧阃鍑虹▼搴忥纴骞朵笉閲嶆柊钖锷ㄨ$畻链猴纴绋嫔簭鍙鑳芥棤娉曞皢鍗犵敤镄勮祫婧愬綊杩樼粰绯荤粺銆傝烽吨鏂板惎锷ㄨ$畻链轰互閲婃斁绯荤粺璧勬簮銆 3. 鍑忓皯镊锷ㄨ繍琛岀殑绋嫔簭銆傚傛灉鍦ㄥ惎锷╓indows镞惰嚜锷ㄨ繍琛岀殑绋嫔簭澶澶氾纴闾d箞锛屽嵆浣块吨鏂板惎锷ㄨ$畻链猴纴涔熷皢娌℃湁瓒冲熺殑绯荤粺璧勬簮鐢ㄤ簬杩愯屽叾浠栫▼搴忋傝剧疆Windows涓嶅惎锷ㄨ繃澶氱▼搴:鍏朵竴锛屽崟鍑烩滃紑濮嬧啋杩愯屸濓纴阌鍏モ渕sconfig钬濓纴鍗曞嚮钬灭‘瀹气濇寜阍锛屽崟鍑烩滃惎锷ㄢ濋夐”鍗★纴娓呴櫎涓嶉渶瑕佽嚜钖锷ㄧ殑绋嫔簭鍓岖殑澶嶉夋嗐傚叾浜岋纴鍗曞嚮钬滃紑濮嬧啋杩愯屸濓纴阌鍏モ渟ysedit钬濓纴鍗曞嚮钬灭‘瀹气濇寜阍锛屽垹闄も渁utoexec.bat钬濄佲渨in.ini钬濆拰钬渃onfig.sys钬濇枃浠朵腑涓嶅繀瑕佺殑镊钖锷ㄧ殑绋嫔簭琛屻傜劧钖庯纴閲嶆柊钖锷ㄨ$畻链恒 4. 璁剧疆铏氭嫙鍐呭瓨銆傝櫄𨰾熷唴瀛树笉瓒充篃浼氶犳垚绯荤粺杩愯岄敊璇.鍙浠ュ湪钬灭郴缁熷睘镐р濆硅瘽妗嗕腑镓嫔姩閰岖疆铏氭嫙鍐呭瓨锛屾妸铏氭嫙鍐呭瓨镄勯粯璁や綅缃杞鍒板彲鐢ㄧ┖闂村ぇ镄勫叾浠栫佺洏鍒嗗尯銆 鍙︼细 绯荤粺璧勬簮(System Resource)鍜屽唴鍦ㄥ苟涓嶆槸钖屼竴涓姒傚康銆 涓変釜User璧勬簮鍫嗗垎鍒鏄:16浣岖殑鐢ㄦ埛鍫(User Heap锛64KB);32浣岖殑绐楀彛鍫(Windows Heap锛2MB);32浣岖殑鐢ㄦ埛凿滃崟鍫(User Menu Heap锛2MB)銆 涓や釜GDI璧勬簮鍫嗗垎鍒鏄:16浣岖殑GDI鍫(GDI Heap锛64KB);32浣岖殑GDI鍫(GDI锛2MB)銆 浠庤繖閲岀殑绯荤粺璧勬簮鍒嗙被鍜屽ぇ灏忔垜浠搴旇ユ槑锏斤纴涓岖CPU鏄疨4杩樻槸486锛屽唴瀛樻槸8M杩樻槸1G锛屾墍链塛indows镄勭敤鎴烽兘𨰾ユ湁钖屾牱澶у皬镄勭郴缁熻祫婧(鍫)锛岀敤鎴蜂笉鑳借嚜宸卞炲姞鎴栧噺灏戠郴缁熻祫婧愮殑澶у皬锛岃繖鏄鐢辨搷浣灭郴缁熷喅瀹氱殑锛屼笌纭浠舵。娆℃病链変换浣曞叧绯汇 闂棰桦师锲: 鍦╓indows涓姣忚繍琛屼竴涓绋嫔簭锛岀郴缁熻祫婧愬氨浼氩噺灏戙傛湁镄勭▼搴忎细娑堣楀ぇ閲忕殑绯荤粺璧勬簮锛屽嵆浣挎妸璧勬簮鍏抽棴锛屽湪鍐呭瓨涓杩樻槸链変竴浜涙病链夌殑DLL鏂囦欢鍦ㄨ繍琛岋纴杩欐牱灏变究寰楃郴缁熺殑杩愯岄熷害涓嬮檷锛岀敋镊冲嚭鐜颁笂杩伴梾棰樸 瑙e喅锷炴硶: 鎴戜滑鍙浠ラ氲繃淇鏀规敞鍐岃〃阌鍊肩殑鏂规硶锛屼娇鍏抽棴杞浠跺悗镊锷ㄦ竻闄ゅ唴瀛树腑娌$敤镄凞LL鏂囦欢鍙婃椂鏀跺洖娑堣楃殑绯荤粺璧勬簮銆傛墦寮娉ㄥ唽琛ㄧ紪杈戝櫒锛屾垒鍒扳淗KEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\explorer"涓轰富阌锛屽湪鍙宠繃绐椾腑鍗曞嚮鍙抽敭锛屾柊寤轰竴涓钖嶈繖钬淎lwaysUnloadDII钬灭殑钬滃瓧绗︿覆鍊尖滐纴铹跺悗灏嗏淎lwaysUnloadDII钬灭殑阌鍊间慨鏀逛负钬1钬滐纴阃鍑烘敞鍐岃〃閲嶆柊钖锷ㄦ満鍣ㄥ嵆鍙杈惧埌鐩镄
③ visual studio 编译器的堆空间不足问题的解决(cmake版本)
我们有个自动编译游戏引擎的脚本,这个脚本时间用久了,总是会报如下的错误:
fatal error C1060: 编译器的堆空间不足
每次出现这种错误,总是要请人重启机器,重新配置,很耽误时间和精力。
所以本人就在努力寻找一个彻底的解决办法。
想直接要解决方法的朋友可以跳过接下来的两节。
简单网上搜一下,就能搜到参考文献1。
如果你的c++工程不用cmake,参考文献1的方法足以满足你的需求。
但是我们工程比较大,肯定是要用cmake的,所以我就开始尝试各种方法: 通过改工程的cmake文件的方式来让cmake生成的vcxproj工程文件中包含PreferredToolArchitecture属性。
网上找了好久,试了不少办法,还是没用。
发现最终解决方案也是个很有趣的过程,值得记录。
首先我看见PreferredToolArchitecture父节点是PropertyGroup,而PropertyGroup下面有Platform属性,PreferredToolArchitecture和Platform是兄弟属性。
我们的Platform用x64还是win32,都是在cmake命令行里指定的。
所以我就大胆猜测,PreferredToolArchitecture这个属性如果可以通过cmake设置的话,大概率也是在cmake的命令行中设置!
接着,就是小心求证的过程,先执行: cmake --help
通过阅读帮助文档,辅以简单的排除法,我觉得toolset-name这个属性很可能是我要的,于是谷歌: cmake toolset name
从而找到了文档2,在文档2中发现了host=x64这个东西,但是我还不知道怎么用!于是继续搜索:cmake host=x64
找到了文档3,然后修改我们的编译脚本,加入这个编译选项,重新cmake,果然,出现了vcxproj文件中看到了PreferredToolArchitecture x64属性!
感觉成功了90%,编译工程,打开任务管理器,观察进程名称,发现c++编译器都是64位的,遂大功告成。
问题的本质就是windows操作系统visual studio的默认cpp编译器是32位的,所以最大内存是4G,就容易导致编译器内存不足。
有问题的cmake指令如下:
使用64位的cpp编译器的解决方法如下:
注意: cmake的GUI并没有-T host的选择,当然最新版的GUI可能也会加这个。。
还有另一种方法,添加环境变量: set PreferredToolArchitecture=x64
虽然用了64位的cpp编译器,过了一段时间,还是报堆空间不足的问题。
据观察,物理内存占用率100%,所以考虑利用空闲的磁盘空间,增大机器的虚拟内存。
win10如何设置虚拟内存的大小: https://jingyan..com/article/2fb0ba4041d14c00f3ec5f4e.html
物理内存只有32G,以前的虚拟内存是6G,我利用空闲磁盘,增大虚拟内存到100G!
④ 镎崭綔绯荤粺璧勬簮涓嶈冻镐庝箞锷(绯荤粺璧勬簮涓嶈冻镐庝箞锷烇纻)
銆愯В鍐冲姙娉曘
鎴戜滑鍙浠ラ氲繃淇鏀规敞鍐岃〃阌鍊肩殑鏂规硶锛屼娇鍏抽棴杞浠跺悗镊锷ㄦ竻闄ゅ唴瀛树腑娌$敤镄凞LL鏂囦欢鍙婃椂鏀跺洖娑堣楃殑绯荤粺璧勬簮銆傛墦寮娉ㄥ唽琛ㄧ紪杈戝櫒锛屾垒鍒扳淗KEY_LOCAL_涓轰富阌锛屽湪鍙宠繃绐椾腑鍗曞嚮鍙抽敭锛屾柊寤轰竴涓钖嶈繖钬淎lwaysUnloadDII钬灭殑钬滃瓧绗︿覆鍊尖滐纴铹跺悗灏嗏淎lwaysUnloadDII钬灭殑阌鍊间慨鏀逛负钬1钬滐纴阃鍑烘敞鍐岃〃閲嶆柊钖锷ㄦ満鍣ㄥ嵆鍙杈惧埌鐩镄勚
镎崭綔鏂规
绗涓绉嶆柟妗
1.娓呴櫎钬滃壀璐存澘
褰撯滃壀璐存澘涓瀛樻斁镄勬槸涓骞呭浘鐢绘垨澶ф垫枃链镞讹纴浼氩崰鐢ㄨ缉澶氩唴瀛樸傝锋竻闄も滃壀璐存澘涓镄勫唴瀹癸纴閲婃斁瀹冨崰鐢ㄧ殑绯荤粺璧勬簮锛氩崟鍑烩滃紑濮嬶纴鎸囧悜钬灭▼搴忥纴鎸囧悜钬滈梼浠讹纴鎸囧悜钬灭郴缁熷伐鍏凤纴鍗曞嚮钬滃壀璐存澘镆ョ湅绋嫔簭锛岀劧钖庡湪钬灭紪杈戣彍鍗曚笂锛屽崟鍑烩滃垹闄ゅ懡浠ゃ
2.閲嶆柊钖锷ㄨ$畻链
鍙阃鍑虹▼搴忥纴骞朵笉閲嶆柊钖锷ㄨ$畻链猴纴绋嫔簭鍙鑳芥棤娉曞皢鍗犵敤镄勮祫婧愬綊杩樼粰绯荤粺銆傝烽吨鏂板惎锷ㄨ$畻链轰互閲婃斁绯荤粺璧勬簮銆
3.鍑忓皯镊锷ㄨ繍琛岀殑绋嫔簭
濡傛灉鍦ㄥ惎锷╓indows镞惰嚜锷ㄨ繍琛岀殑绋嫔簭澶澶氾纴闾d箞锛屽嵆浣块吨鏂板惎锷ㄨ$畻链猴纴涔熷皢娌℃湁瓒冲熺殑绯荤粺璧勬簮鐢ㄤ簬杩愯屽叾浠栫▼搴忋傝剧疆Windows涓嶅惎锷ㄨ繃澶氱▼搴忥细鍏朵竴锛屽崟鍑烩滃紑濮嬧啋杩愯岋纴阌鍏モ渕sconfig锛屽崟鍑烩灭‘瀹氭寜阍锛屽崟鍑烩滃惎锷ㄩ夊崱锛屾竻闄や笉闇瑕佽嚜钖锷ㄧ殑绋嫔簭鍓岖殑澶嶉夋嗐傚叾浜岋纴鍗曞嚮钬滃紑濮嬧啋杩愯岋纴阌鍏モ渟ysedit锛屽崟鍑烩灭‘瀹氭寜阍锛屽垹闄も渁utoexec.bat銆佲渨in.ini鍜屸渃onfig.sys鏂囦欢涓涓嶅繀瑕佺殑镊钖锷ㄧ殑绋嫔簭琛屻傜劧钖庯纴閲嶆柊钖锷ㄨ$畻链恒
4.璁剧疆铏氭嫙鍐呭瓨
铏氭嫙鍐呭瓨涓嶈冻涔熶细阃犳垚绯荤粺杩愯岄敊璇.鍙浠ュ湪钬灭郴缁熷睘镐у硅瘽妗嗕腑镓嫔姩閰岖疆铏氭嫙鍐呭瓨锛屾妸铏氭嫙鍐呭瓨镄勯粯璁や綅缃杞鍒板彲鐢ㄧ┖闂村ぇ镄勫叾浠栫佺洏鍒嗗尯銆
5.搴旂敤绋嫔簭瀛桦湪Bug鎴栨瘉鍧
链変簺搴旂敤绋嫔簭璁捐′笂瀛桦湪Bug鎴栬呭凡琚姣佸潖锛岃繍琛屾椂灏卞彲鑳戒笌Windows鍙戠敓鍐茬獊鎴栦簤澶鸿祫婧愶纴阃犳垚绯荤粺璧勬簮涓嶈冻銆傝В鍐虫柟娉曟湁浜岋细涓鏄鍗囩骇闂棰樿蒋浠讹纴浜屾槸灏嗘よ蒋浠跺嵏杞斤纴鏀硅呭叾浠栧悓绫昏蒋浠躲
6.鍐呭瓨浼桦寲杞浠
涓嶅皯镄勫唴瀛树紭鍖栬蒋浠讹纴濡俣AMIdle鍜孧emoKit閮借兘澶熻嚜锷ㄦ竻绌衡滃壀璐存澘銆侀喷鏀捐鍏抽棴绋嫔簭链閲婃斁镄勭郴缁熻祫婧愩佸硅櫄𨰾熷唴瀛樻枃浠惰繘琛岄吨鏂扮粍缁囩瓑锛屽厤闄ゆ坠宸ユ搷浣灭殑楹荤储锛岃揪鍒拌嚜锷ㄩ喷鏀剧郴缁熻祫婧愮殑鐩镄勚
绗浜岀嶆柟妗
1.绂佺敤涓閮ㄥ垎钖锷ㄩ”
钖锷ㄦ椂锷犺浇杩囧氱殑搴旂敤绋嫔簭浼氢娇Windows锲犵郴缁熻祫婧愪弗閲崭笉瓒宠屸滆掴灞忥纴锲犳ゆ垜浠链濂借繍琛屸淢sconfig绂佺敤涓閮ㄥ垎搴旂敤绋嫔簭銆傛垨钥呬娇鐢╓indows浼桦寲澶у笀𨱒ヤ唬锷炽
2.璁剧疆瓒冲熺殑铏氭嫙鍐呭瓨
铏氭嫙鍐呭瓨涓嶈冻涔熶细阃犳垚绯荤粺澶氢换锷¤繍绠楅敊璇锛屾垜浠鍙浠ラ氲繃镞跺父鍒犻櫎涓浜涗复镞舵枃浠跺拰浜ゆ崲鏂囦欢瀵规ら梾棰桦姞浠ヨВ鍐筹纴姝ゅ栬缮鍙浠ュ湪钬灭郴缁熷睘镐т笅镓嫔姩閰岖疆铏氭嫙鍐呭瓨锛屾妸铏氭嫙鍐呭瓨镄勯粯璁や綅缃杞鍒板叾浠栭昏緫鐩树笅銆傚苟璁剧疆寰楀ぇ涓浜涖
3.缁欑‖鐩树缭鐣栾冻澶熺┖闂
鐢变簬Win9X杩愯屾椂闇瑕佺敤纭鐩树綔铏氭嫙鍐呭瓨锛岃繖灏辫佹眰纭鐩桦繀椤讳缭鐣欎竴瀹氱殑镊鐢辩┖闂翠互淇濊瘉绋嫔簭镄勬e父杩愯屻备竴鑸钥岃█锛屾渶浣庡簲淇濊瘉100MB浠ヤ笂镄勭┖闂达纴钖﹀垯鍑虹幇钬滆掴灞忓緢鍙鑳戒笌纭鐩桦墿浣欑┖闂村お灏忔湁鍏炽傚彟澶栵纴纭鐩樼殑纰庣墖澶澶氾纴涔熷规槗瀵艰嚧钬滆掴灞忕殑鍑虹幇銆傚洜姝わ纴姣忛殧涓娈垫椂闂磋繘琛屼竴娆$庣墖鏁寸悊鏄蹇呰佺殑銆
4.浣跨敤鍐呭瓨绠$悊杞浠
鍓╀笅镄勫氨鏄浜涙潅椤逛简锛岃稿备笉鐢╝ctivedesktop涔嬬被娴璐硅祫婧愮殑锷熻兘銆备娇鐢ㄥ唴瀛樼$悊杞浠讹纴濡俣AMIdle涔嬬被镄勚傚吇鎴愬ソ涔犳傥锛屾殏镞朵笉鐢ㄧ殑绋嫔簭灏卞皢鍏跺叧闂銆
⑤ visualsvnserver在browse时提示内存不足
解决方案:1、打开3G内存支持开关,使操作系统应用程序可以使用3G内存。2、将命令行cd到你的vs的devenv.exe所在的安装目录,一般在这里C盘。3、关掉你所有打开的VS,(最好备份一下devenv.exe)在命令行输入命令。4、如果OK了的话,重启计算机生效。
如果重启WIN7后出现系统无法启动,无限跳到启动修复的话,则需要重置系统引导,按照如下操作。1、重启一直按F8进入高级菜单选择,进入安全模式。(如果无法进入安全模式则是系统损坏,可以尝试在启动修复中还原系统。)2、相对于其他版本的Windows而言,虽然Win7系统的稳定性是毋庸置疑的,但是由于突然断电、病毒破坏或者是安装、卸载某些比较特殊的软件,同样会使得Win7的引导程序无法正常工作,此时Win7就会无法正常启动并且同时报告错误。3、在这种状态下,按下F8快捷楗根本无法调出Win7的高级启动菜单。
扩大使用内存不能解决问题的话,有以下几种可行方案:1、安装64位系统。2、在编译前关闭所有Design(设计)页面,Design页面也有可能消耗大量内存。3、卸载VisualStudio的插件,例如ReShaper等。4、重装VisualStudio。目前我是在VS2008上经常出现该问题,VS2010官方已经发布了一个相关补丁来修复。5、卸载电脑中当前运行占内存比较大的软件,例如杀毒软件等。