連結錯誤-庫衝突(libcmt.lib和libcmtd.lib)

來源:互聯網
上載者:User

在同一個項目中,所有的源檔案必須連結相同的C執行階段程式庫。如果某一檔案用了Multithreaded DLL版本,而其他檔案用了Single-Threaded或者Multithreaded版本的庫,也就是說用了不同的庫,就會導致這個警告的出現。

 

 

 

總之,一句話,lib之間有衝突。需要刪除匯入的一些libs。 

 

   版 本 類 型 使用的library 被忽略的library
R  Release 單線程 libc.lib libcmt.lib, msvcrt.lib, libcd.lib, libcmtd.lib, msvcrtd.lib
多線程 libcmt.lib libc.lib, msvcrt.lib, libcd.lib, libcmtd.lib, msvcrtd.lib
使用DLL的多線程 msvcrt.lib libc.lib, libcmt.lib, libcd.lib, libcmtd.lib, msvcrtd.lib
D   Debug 單線程 libcd.lib libc.lib, libcmt.lib, msvcrt.lib, libcmtd.lib, msvcrtd.lib
多線程 libcmtd.lib libc.lib, libcmt.lib, msvcrt.lib, libcmtd.lib, msvcrtd.lib
使用DLL的多線程 msvcrtd.lib libc.lib, libcmt.lib, msvcrt.lib, libcd.lib, libcmtd.lib

例如編譯Release版本的單線程的工程,在linker的命令列加入如下的參數: /NODEFAULTLIB:libcmt.lib
/NODEFAULTLIB:msvcrt.lib /NODEFAULTLIB:libcd.lib /NODEFAULTLIB:libcmtd.lib /NODEFAULTLIB:msvcrtd.lib

解決辦法:

在CUDA編譯選項裡加入/MTd 或  /MT

Project Settings:  

在有"LIBCMT"衝突錯誤存在,在“配置屬性-->連結器-->輸入-->忽略特定庫”中把libcmt.lib添加進去或者在“配置屬性-->連結器-->命令運”的“附加選項”添加上/NODEFAULTLIB:libcmt.lib
libcmtd 這個庫有時候不能忽略,忽略後會有不能解析的外部符號錯誤

其實有個方便的方法 連結時加入參數 /FORCE:MULTIPLE

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.