問題描述:
在把一個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編譯最后便已通過了