這一般是項目的文件被放在了fat/fat32分區上導致的, 解決方法是把它們都移動到ntfs分區上, 或者把「項目屬性|Manifest Tool|General|Use FAT32 Work-around」設為yes。
2、開發組運行正常, 換到其它機器上就不行了
這一般就是系統dll(包括crt,mfc,atl等)沒有正確配置導致的。 如果程序是release版, 那麼很簡單, 只要把「/SDK/v2。0/BootStrapper/Packages/vcredist_x86」下的"vcredist_x86。exe"拷貝到目標機器上運行即可, 這是以x86平台為例的, 如果你用的是別的cpu平台(amd64或ia64)把x86替換成相應的內容就可以了。
如果是debug版, 就復雜一些了, 首先要確定你需要的dll的版本, 絕大多數(注意:不是"所有")情況下它和編譯器的版本相同, 通過vs2005的關於對話框就能看到, 如下圖所示:
確定版本後, 在開發組的機器上進入「%windir%/winsxs"文件夾(下面將以x86平台8.0.50727.762版本的debug crt為例進行說明), 拷貝以下文件到目標機器的相同位置即可:
x86_Microsoft.VC80.DebugCRT_1fc8b3b9a1e18e3b_8.0.50727.762_x-ww_5490cd9f文件夾下的所有文件
Manifests文件夾下的x86_Microsoft.VC80.DebugCRT_1fc8b3b9a1e18e3b_8.0.50727.762_x-ww_5490cd9f.cat和x86_Microsoft.VC80.DebugCRT_1fc8b3b9a1e18e3b_8.0.50727.762_x-ww_5490cd9f.manifest
Policies/x86_policy.8.0.Microsoft.VC80.DebugCRT_1fc8b3b9a1e18e3b_x-ww_09e017b4文件夾下的8.0.50727.762.cat和 8.0.50727.762.policy
注意, 上面的操作只是在目標操作系統為winxp,win2003及以上時才需要的, 如果是win2000及以下的系統, 只要把第一個文件夾下的文件拷貝到system32中就行了。
附:
msdn上有關vc應用程序部署的幾片文章, 供參考
Troubleshooting C/C++ Isolated Applications and Side-by-side Assemblies:http://msdn2.microsoft.com/en-us/library/ms235342.aspx
Deployment Examples:http://msdn2.microsoft.com/en-us/library/ms235285(VS.80).aspx
以下是與這個問題相關的一些系統提示信息, 為了讓碰到這些問題的人更容易搜到這篇文章, 我把它們列在這里.
參照的匯編沒有安裝在系統上
應用程序要求的組件版本同另一個活動的組件有沖突。
系統無法執行指定的程序
ERROR_SXS_ASSEMBLY_NOT_FOUND
14003
0x800736B3
The referenced assembly is not installed on your system
2. 請問程序文件(x86)在哪呢
Program Files (x86)是一個系統文件夾,一般32位應用程序都會默認安裝在Program Files (x86)文件中,而64位應用程序則會安裝在Program Files文件夾中。
該設計是為了防止載入錯誤版本的DLL,比如用戶安裝了32位程序,如果錯誤載入了64位DLL就會導致程序崩潰,因此微軟就設置了2個不同的文件夾Program Files和Program Files (x86)來區分x64和x84不同的程序文件。
一個初始的Windows系統中的program files(x86)里一般有以下文件夾:
1、Common Files:提供程序中的一些共享配置文件。
2、Internet Explorer:網路瀏覽器。
3、Windows Media Player:媒體播放器。
4、Movie Maker:影片製作工具。
5、Outlook Express:提供郵件收發功能。
6、NetMeeting:網路聊天軟體。
7、Messenger:新版網路聊天工具。