由於要編譯LTP,LTP在MINGW下又不能編譯,所以忍痛安裝了VS2010+CMAKE。
由於VS在本科時候虐我千百遍,所以一直心存陰影。。。
轉入正題,當cmake的時候, 它提示 “LINK : fatal error LNK1123: 轉換到 COFF 期間失敗: 文件無效或損壞”
於是上網搜結果,基本上都是“VS 2010下,打開實例的時候出現錯誤”,附帶傳送門 http://bbs.csdn.net/topics/390121452
解決方案也傳送到這里:
“VS2010在經歷一些更新后,建立Win32 Console Project時會出“error LNK1123” 錯誤,解決方案為將 項目|項目屬性|配置屬性|清單工具|輸入和輸出|嵌入清單 “是”改為“否”即可,但是沒新建一個項目都要這樣設置一次。
在建立VS2010 Win32 Project項目時,按照上面解決方案依然發生了“error LNK1123”錯誤,經過上網查資料,解決方案為:
第一步:與上相同。
第二步:將 項目|項目屬性|配置屬性|連接器|清單文件|嵌入清單 “是”改為“否”。
第三步:一般計算機經過上兩步設置就能解決問題了,但是如果還有問題,那就按一下方法解決:
計算機是否為64bit操作系統,如是,繼續2。
查找是否有兩個cvtres.exe。一個是C:\Program Files(x86)\Microsoft Visual Studio 10.0\vc\bin\cvtres.exe, 另一個是C:\Windows\Microsoft.NET\Framework\v
4.0.30319\cvtres.exe。右鍵屬性|詳細信息 查看兩者版本號,刪除/重命名較舊的版本,或者重新設置Path變量。
意外的是,治本的辦法是第三步,刪除舊版本的cvtres.exe后,就不需要每次都設置配置了。”
但是但是!!咱們用的是CMAKE又不是VS2010的時候出的問題,所以我們還是得從源頭找問題。
轉折點是在http://blog.csdn.net/rryr2/article/details/8221357里面說到的,
“VS2010和VS2012或者sv2008和VS2010,高版本VS編譯都會出現,使用VS2008的D:\Program Files\Microsoft Visual Studio 9.0\VC\bin目錄下的cvtres.exe替換到VS2010版本VS目錄下再編譯成功。”
他提示VS不同版本直接的cvtres不一樣,如果低版本的工程用高版本打開時會有標題中說的問題。又得知LTP是在VS2008里面編譯的,所以把VS2008里的cvtres.exe拷到VS2010里面。cmake成功,搞定。