此报错是在用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),解决