編譯生成可能遇到的問題
[1]fatal error LNK1112: 模塊計(jì)算機(jī)類型“X86”與目標(biāo)計(jì)算機(jī)類型“x64”沖突
原因:win7下的64位系統(tǒng),在運(yùn)行程序的時(shí)候,需要的DLL必須是64位系統(tǒng)編譯的,VS2010也必須在安裝的時(shí)候,選擇了32位編譯的支持。如果安裝的時(shí)候,已經(jīng)選擇了,那么出現(xiàn)該問題的解決辦法:
(1)右鍵項(xiàng)目名,點(diǎn)擊屬性,彈出項(xiàng)目屬性頁,找到鏈接器----高級(jí),修改右側(cè)的目標(biāo)計(jì)算機(jī),選擇有X64的那個(gè)選項(xiàng)。
(2)右鍵項(xiàng)目名,選擇清理解決方案,清理完之后選擇X64平臺(tái)編譯器,然后重新生成解決方案,便可以調(diào)試成功。選擇X64平臺(tái)編譯器如下圖:
如果如果在選擇平臺(tái)的下拉列表里找不到x64,則說明系統(tǒng)沒有安裝支持64位編譯,則可以找VS安裝文件進(jìn)行增量安裝。
[2]fatalerrorLNK1123:轉(zhuǎn)換到COFF期間失敗:文件無效或損壞
安裝多個(gè)VS版本會(huì) 出現(xiàn)這個(gè)問題,解決方法一般如下:
a)微軟官方給出的具體解決方法是給VS2010打SP1補(bǔ)丁,下載地址如下:http://www.innovatechautomation.com/soft/24545.html.安裝完重新生成,如果不行,試下一方法。
b)微軟官方的另一個(gè)解決方案:發(fā)現(xiàn)是嵌入清單的問題,于是對(duì)該工程以及所有依賴工程進(jìn)行如下操作:
右鍵->工程屬性->配置屬性-> 清單工具->輸入和輸出->嵌入清單,選擇[否]。rebuild 之,成功解決。
錯(cuò)誤: 無法生成一個(gè) Microsoft 基礎(chǔ)類的應(yīng)用程序后添加新的資源文件,其中包含一個(gè)字符串表
癥狀
在 Visual C++.NET 中,Microsoft 基礎(chǔ)類 (MFC) 應(yīng)用程序可以有多個(gè)資源 (.rc) 文件。但是,當(dāng)您添加新的資源文件,其中包含一個(gè)字符串表,然后嘗試生成項(xiàng)目或保存資源文件時(shí),您會(huì)收到以下錯(cuò)誤消息:
"資源數(shù)據(jù)是無效的。
無法保存資源腳本。
在新的資源文件的字符串表中添加新的字符串項(xiàng),然后嘗試重新生成該項(xiàng)目時(shí)可能會(huì)收到以下錯(cuò)誤消息:
"致命的錯(cuò)誤 CVT1100: 重復(fù)的資源。類型: 字符串、 名稱: 7、 語言: 0x0409"
"致命錯(cuò)誤 LNK1123: 轉(zhuǎn)換到 COFF 期間失敗: 文件無效或損壞"
原因
第一個(gè)錯(cuò)誤發(fā)生的原因的新的資源文件的字符串表中是沒有字符串項(xiàng)。
如果現(xiàn)有的資源文件和新的資源的字符串表中的 Id 文件沖突,可能會(huì)收到第二個(gè)錯(cuò)誤消息。資源編譯器編譯字符串表,它保留一組 16 Id。例如,如果在字符串表中的第一個(gè)資源文件使用 ID 為 100,而 ID 110 用于在字符串表中的第二個(gè)資源文件,將發(fā)生沖突。
解決方案
要變通解決此問題,請(qǐng)按照下列步驟操作:
添加新的資源文件的字符串表中的字符串項(xiàng)。
為了避免沖突,請(qǐng)使用 Id 過于接近彼此不同的資源文件的 MFC 項(xiàng)目中的字符串。例如,如果一個(gè)資源文件中包含的字符串 ID 為 100,不要使用 ID 值范圍 100 至 115 中同一 MFC 項(xiàng)目的其他資源文件中。