簡體   English   中英

msvc版本中的鏈接器不匹配。 它有什么解決方法嗎?

[英]linker mismatch in msvc version. Is there any workaround for it?

我正在嘗試構建VS 2010開發的c ++代碼

我可以編譯它,但在鏈接期間,我收到此錯誤:

Error   1   error LNK2038: mismatch detected for '_MSC_VER': value '1600' doesn't match value '1700' in myfile.obj  

我知道這是因為它們是使用不同版本的MSVC構建的,但有沒有辦法可以將MSVC配置為使用使用舊版MSVC編譯的庫?

編輯1

最后,我決定安裝VS2012 express並用它編譯代碼。 似乎微軟不喜歡你將一個項目從一個版本的MSVC輕松移植到另一個版本。

您有三種解決方案可以解決此問題:

  • 在2012年重新編譯VS2010庫(但您需要源代碼)。 或者,如果已經有一個可用的2012庫(但你已經檢查過了,我猜)。
  • 或者你可以這樣做:

    在Project Properties中,選擇General,然后將“Platform Toolset”設置更改為“Visual Studio 2010(v100)”。

  • 或者您可以將您的庫鏈接為外部庫。

MSVC靜態庫在主要版本之間是二進制不兼容的(至少那些使用Microsoft的STL實現的那些):

C ++標准庫實現故意破壞Visual Studio版本之間的二進制兼容性(2005,2008,2010,2012)。 來源

你可以:

  • 用相同的編譯器重新編譯外部庫
  • 將您的代碼移動到與外部庫使用相同的編譯器
  • 動態鏈接外部庫(.dll)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM