"LIBCMT"与其他库的使用冲突+未解析的外部符号
'LIBCMT' conflicts with use of other libs + unresolved external symbols
我有一个使用OpenGL 3.2(+lib)和FreeType2的程序。然后是Boost和OpenSSL的另一个程序。OpenGL方面是确保文本可以渲染,boost/openssl程序是做一个安全的登录/游戏服务器。
两个程序都可以很好地工作。
然而,在游戏(GL + freetype)项目中添加Boost和OpenSSL导致它无法链接。
我已经链接了下面的库,并包含了其中的includes文件夹。
glimg.libglutil.libglfw.libopengl32.libfreetype.libglew32.libuser32.liblibeay32.libssleay32.lib
链接器错误是。
1>LINK : warning LNK4098: defaultlib 'LIBCMT' conflicts with use of other libs; use /NODEFAULTLIB:library
1>libeay32.lib(cryptlib.obj) : error LNK2001: unresolved external symbol __imp__DeregisterEventSource@4
1>libeay32.lib(cryptlib.obj) : error LNK2001: unresolved external symbol __imp__ReportEventA@36
1>libeay32.lib(cryptlib.obj) : error LNK2001: unresolved external symbol __imp__RegisterEventSourceA@8
1>libeay32.lib(rand_win.obj) : error LNK2001: unresolved external symbol __imp__DeleteDC@4
1>libeay32.lib(rand_win.obj) : error LNK2001: unresolved external symbol __imp__DeleteObject@4
1>libeay32.lib(rand_win.obj) : error LNK2001: unresolved external symbol __imp__GetBitmapBits@12
1>libeay32.lib(rand_win.obj) : error LNK2001: unresolved external symbol __imp__BitBlt@36
1>libeay32.lib(rand_win.obj) : error LNK2001: unresolved external symbol __imp__GetObjectA@12
1>libeay32.lib(rand_win.obj) : error LNK2001: unresolved external symbol __imp__SelectObject@8
1>libeay32.lib(rand_win.obj) : error LNK2001: unresolved external symbol __imp__CreateCompatibleBitmap@12
1>libeay32.lib(rand_win.obj) : error LNK2001: unresolved external symbol __imp__GetDeviceCaps@8
1>libeay32.lib(rand_win.obj) : error LNK2001: unresolved external symbol __imp__CreateCompatibleDC@4
1>libeay32.lib(rand_win.obj) : error LNK2001: unresolved external symbol __imp__CreateDCA@16
1>.BasicTexture.exe : fatal error LNK1120: 13 unresolved externals
Runtime Library设置为多线程DLL (/MD)
我不知道该怎么办,我将非常感谢你的帮助。
您正在尝试使用/MD
进行编译,这可能是正确的选择,但是一些代码(可能是其中一个库)是使用/MT
构建的,并且您不能在同一个程序中同时使用这两种方式。你需要找出哪个库是用/MT
构建的,然后用/MD
重建它。
当编译器生成引用外部定义的对象或函数的代码,而链接器未能找到它们时,会产生未解析的外部错误消息。要生成调用函数调用的代码,编译器只需要一个声明:
extern "C" BOOL DeregisterEventSource ( HANDLE hEventLog );
这些信息足以产生call
指令(目标地址除外)。extern
关键字通知编译器实现在其他地方定义。因此,它不能知道目标地址,必须稍后填写。当编译器完成后,链接器的工作就是将各个部分连接在一起。它使用从导入库中收集的信息来查找所需的偏移量。
__imp__
前缀,有时有一个A
或W
后缀,后面跟着@<n>
,其中冲突警告表明并非所有模块都使用相同的运行时库。尽管这只是一个警告,但这是一个严重的问题,应该得到解决。如果您混合使用/MD
和/MT
编译器开关,您会得到此警告,但是如果您混合使用发布和调试运行时库(如/MD
和/MDd
),也会得到此警告。要诊断此消息,您可以使用/VERBOSE:LIB
链接器开关来确定链接器正在搜索哪些库。有关此警告的更多信息可在此MSDN链接中找到。
- C++:Application.cpp中抛出了未解析的外部符号(解决方案在问题的末尾,供未来的读者参考)
- 未解析的外部符号_MsiLocateComponentW@12.
- 在C++中使用 gRPC 时未解析的外部符号
- LibPrivoxy: 未解析的外部符号 __declspec(dllimport) int __stdcall Sta
- 尝试从 XamlApplication 编译 C++/WinRT 空白应用程序时,我收到未解析的外部符号 winrt_make_*
- 我收到错误LNK2001:未解析的外部符号(C++代码)
- 可视抽象类 c++(错误 LNK 2001:未解析的外部符号)
- 如何摆脱C++中未解析的外部符号"private: static char"错误?
- 当 lib 已添加到其他依赖项时,如何在 VS 中调试未解析的外部符号错误
- 仅在少数方法(静态或共享库)中解析的外部符号
- 未解析的外部符号"__declspec(dllimport)与 Spdlog c++ 库
- 函数 _main (OPENGL C++) 中引用的未解析的外部符号 ________
- 错误LNK2019未解析的外部符号"public: __thiscall SLinkList<char>::SLinkList<char>(void)"
- 使用静态 constexpr 成员的未解析外部符号
- 引入参数化构造函数后显示 LNK 2019 未解析外部符号的代码错误
- Dlib LNK2001未解析的外部符号USER_ERROR__consistent_build_configurati
- 矛盾的未解决的外部符号+未使用的库与VS2017和FFMPEG 4
- 链接器错误:切换到unicode生成给出:未解析的外部符号WinMain
- 错误 LNK2019:未解析的外部符号"外部"C"此错误是什么?
- 错误 : LNK2019: 未解析的外部符号"外部 "C"