簡體   English   中英

memcmp linker 錯誤 Visual Studio 2015

[英]memcmp linker error Visual Studio 2015

我有一個 visual studio 2012 c++ 項目。 我最近卸載了它並安裝了 visual studio 2015 並升級了項目。 當我構建項目時,出現如下所示的錯誤:

錯誤 LNK2019 未解析的外部符號 _memcmp 在 function 中引用

此外,我沒有在我的代碼中的任何地方使用 memcmp 功能。

我使用了 linker 冗長的 function 並且可以在 output 文件中看到以下內容:

找到_memcmp

在 MyC++Project.obj 中引用

在 libcpmtd.lib(xstrcoll.obj) 中引用

加載 libvcruntimed.lib(__memcmp_.obj)

這里有兩個問題

1.即使我沒有在我的代碼中使用 memcmp 為什么我會收到 linker 錯誤?

2.為什么memcmp被加載為__memcmp_.obj

我的項目中也有以下設置:

1.C++-->代碼生成-->Runtime Library設置為/MTd

2.Linker-->Ignore All default libraries 設置為nothing

我已經嘗試了所有的項目設置,但一切都是徒勞的。

我只有這個 memcmp function 有問題,我沒有使用過。

我使用過 mamcpy 和 memset 並且沒有問題

將vcruntime.lib或其他適當版本的CRT Library顯式添加到鏈接器參數(其他依賴項)。

當您明確使用memcmp時,它可能作為內部函數處理並編譯為內聯函數。

嘗試將vcruntime.libucrt.lib添加到其他依賴項中。 ===> properties-> Linker-> Input-> Additional Dependencies

'vcruntime.lib': "C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\VC\\lib\\vcruntime.lib"示例路徑'vcruntime.lib': "C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\VC\\lib\\vcruntime.lib"

'ucrt.lib' : "C:\\Program Files (x86)\\Windows Kits\\10\\Lib\\10.0.16299.0\\ucrt\\x86\\ucrt.lib"示例路徑'ucrt.lib' : "C:\\Program Files (x86)\\Windows Kits\\10\\Lib\\10.0.16299.0\\ucrt\\x86\\ucrt.lib"

我的環境: VS2017(第141頁)

我在 Visual Studio 2015 的舊版 Visual C++ 6.0 nmake文件中遇到了同樣的問題。

這篇名為通用 CRT 簡介的博客文章描述了如何將 Visual Studio 2015 運行時拆分為多個庫。 運行時現在“將 CRT 分為兩個邏輯部分:VCRuntime,其中包含進程啟動和異常處理等所需的編譯器支持功能,以及包含 CRT 的所有純庫部分的“穩定”部分”以便更輕松地進行更新。

只要您不使用/nodefaultlib選項進行鏈接,當您鏈接您的項目時,就會找到所有正確的庫文件。 如果使用/nodefaultlib選項鏈接,則在鏈接時需要鏈接幾個額外的庫。 例如,您之前可能只是鏈接msvcrt.lib以便使用 CRT DLL,現在您還需要鏈接vcruntime.libucrt.lib 下表顯示了您需要為庫的每個“風味”鏈接哪些庫:

 Release DLLs (/MD ): msvcrt.lib vcruntime.lib ucrt.lib Debug DLLs (/MDd): msvcrtd.lib vcruntimed.lib ucrtd.lib Release Static (/MT ): libcmt.lib libvcruntime.lib libucrt.lib Debug Static (/MTd): libcmtd.lib libvcruntimed.lib libucrtd.lib

另請參閱 Microsoft 文檔C 運行時 (CRT) 和 C++ 標准庫 (STL).lib 文件,其中描述了有關這些庫的詳細信息。

另請參閱Microsoft C/C++ 更改歷史 2003 - 2015

暫無
暫無

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

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