fatal error C1047: 對象或庫文件“.\x64\Release\Des.obj”是使用比創建其他對象所用編譯器舊的編譯器創建的;請重新生成舊的對象和庫


問題描述:

在把一個32位的dll編譯成64位的時候提示上面的錯誤

解決辦法:

>屬性->常規->項目默認值->全程序優化  將這里的默認項 “使用鏈接時間代碼生成”改為“無全程序優化”

按照上面的解決辦法更改后,用2008編譯會提示新的錯誤:

fatal error C1900: “P1”(第“20081201”版)和“P2”(第“20070207”版)之間 Il 不匹配

主要原因:

鏈接時使用了某些用更新的編譯器編譯的LTCG(Link Time Code Generation)的library。之所以x86是正常的,是因為很巧鏈接時使用的x86 lib是普通lib,而amd64 lib是LTCG lib.

解決方案:兩種

1)更新當前使用的編譯鏈接工具,使其與lib匹配。當然,這樣編譯出來的二進制文件可能會有所改變(優化可能不同),所以可能需要重新測試。
2)使用不帶LTCG的library

我改成了用2012編譯最后便已通過了




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM