這是我轉的一篇非常全的帖子
能查到的解決方法都在裏面有提及:
我是使用 stdafx.h加入這句
code #pragma comment(linker, "\"/manifestdependency:type='Win32' name='Microsoft.VC80.CRT' version='8.0.50608.0' processorArchitecture='X86' publicKeyToken='1fc8b3b9a1e18e3b' language='*'\"") 解決的
vs2008的話改成VC90.CRT
version='8.0.50608.0' 改成你的vs的版本.
以下是轉載的全文
一個項目從vc6遷移到VS2005,在修改了一系列的類型警告後。編譯成功了,Debug的時候,結果卻冒出一個R6034錯誤:"An application has made an attempt to load the C runtime library incorrectly. Please contact the application's support team for more information."
Output Window:app.exe 中的 0x7c984ed1 處最可能的異常: 0xC0000142: DLL Initialization Failed。
編譯條件是:Linker->Manifest File ->Allow Isolation:Yes。
之後,調試中出現若干錯誤,屏蔽掉錯誤代碼,可以運行,只是最前面的一個splash窗體沒有了。
(參考:http://forums.microsoft.com/china/ShowPost.aspx?PostID=1988459&SiteID=15)
Solution to “MSVCR80D.dll not found”
“沒有找到MSVCR80D.dll,因此這個應用程序未能啓動。重新安裝應用程序可能會修復此問題。”
問題所在:由於vs.net 2005 採用了一種新的DLL方案,搞成一個exe還要配有一個manifest文件(一般在嵌入文件裏了,所以看不到,不過也可以不嵌入,這樣會生產一個<程序名>.exe.manifest的文件,沒它exe自己就轉不了了:)這是個新功能,微軟弄了個新工具(mt.exe),結果不好用,好像是fat32下時間戳有問題(在ntfs下這個問題就沒有了),搞得manifest有時嵌入不到exe中(默認配置是嵌入的,所以就報錯找不到dll了。
解決方案
1. 微軟的解決方案。
在“屬性->配置屬性->清單工具->常規“下有一個”使用FAT32解決辦法,設置爲"是"
2. 找到你的工程的文件夾,如(myproject),找到其下的myproject\myproject\Debug\,Delete it.
我也碰到上面的問題,上面是解決方案。直接在stdafx.h頭文件中加入這個就可以了。#pragma comment(linker, "\"/manifestdependency:type='Win32' name='Microsoft.VC80.CRT' version='8.0.50608.0' processorArchitecture='X86' publicKeyToken='1fc8b3b9a1e18e3b' language='*'\"")