此報錯是在用OpenGL畫圖時遇到的(OpenGL是項目名稱):
1>------ 已啟動生成: 項目: OpenGL, 配置: Debug Win32 ------ 1>glad.c 1>源.cpp 1>源.obj : error LNK2019: 無法解析的外部符號 __imp___invalid_parameter,該符號在函數 "void * __cdecl std::_Allocate_manually_vector_aligned<struct std::_Default_allocate_traits>(unsigned int)" (??$_Allocate_manually_vector_aligned@U_Default_allocate_traits@std@@@std@@YAPAXI@Z) 中被引用 1>源.obj : error LNK2019: 無法解析的外部符號 __imp___CrtDbgReport,該符號在函數 "void * __cdecl std::_Allocate_manually_vector_aligned<struct std::_Default_allocate_traits>(unsigned int)" (??$_Allocate_manually_vector_aligned@U_Default_allocate_traits@std@@@std@@YAPAXI@Z) 中被引用 1>msvcprtd.lib(locale0_implib.obj) : error LNK2019: 無法解析的外部符號 __imp___free_dbg,該符號在函數 "public: static void __cdecl std::_Fac_node::operator delete(void *)" (??3_Fac_node@std@@SAXPAX@Z) 中被引用 1>msvcprtd.lib(locale0_implib.obj) : error LNK2019: 無法解析的外部符號 __imp___malloc_dbg,該符號在函數 "public: static void * __cdecl std::_Fac_node::operator new(unsigned int)" (??2_Fac_node@std@@SAPAXI@Z) 中被引用 1>D:\18482\visual studio\source\repos\OpenGL\Debug\OpenGL.exe : fatal error LNK1120: 4 個無法解析的外部命令 1>已完成生成項目“OpenGL.vcxproj”的操作 - 失敗。 ========== 生成: 成功 0 個,失敗 1 個,最新 0 個,跳過 0 個 ==========
在網上找了找,大概有兩種可能:
- 缺少依賴庫,這種情況直接查找符號對應的庫,然后將其添加至依賴庫(因為這里是第二種情況,嘗試失敗)
- 運用了錯誤的運行庫
在一程序中使用不同類型的運行時庫或使用調試和非調試版本的運行時庫,則將收到此鏈接錯誤。
例如,編譯一個文件以使用一種運行時庫,而編譯另一個文件以使用另一種運行時庫(例如單線程運行時庫對多線程運行時庫),試圖鏈接它們,則將得到此警告。應將所有源
文件編譯為使用同一運行時庫。 其實就是調正編譯器選項參數:/MD、/MT 和 /LD
此方案來自:
https://blog.csdn.net/jean7155/article/details/6924806
- 解決:項目屬性->C/C++->代碼生成->運行庫:選擇正確的運行庫,這個需要查一下不同庫的意思,如果不想查就挨個試一遍。。。
- 我這里原來使用的是:多線程調試 DLL (/MDd),更改為:多線程 DLL (/MD),解決