gpt4 book ai didi

c++ - 无法与标准库链接

转载 作者:行者123 更新时间:2023-11-30 05:20:50 24 4
gpt4 key购买 nike

我正在尝试将 libprotobuf 链接到我的项目。为此,我已经将 libprotobuf 编译为一个动态库,它位于我的库路径中。

但是,当使用 /MD 编译时,我从链接器中得到以下错误:

 3>libprotobuf.lib(int128.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MT_StaticRelease' doesn't match value 'MD_DynamicRelease' in component.obj [C:\Projekte\P3D-ECS\p3d_e

所以,我将标志从 /MD 更改为 /MT,然后那些都消失了。但是,现在链接器无法链接标准库,并且找不到像 std::basic_ostream 这样的符号,并出现很多这样的错误:

error LNK2001: unresolved external symbol "__declspec(dllimport) public: __int64 __cdecl std::basic_streambuf<char,struct std::char_traits<char> >::sputn(char const *,__int64)" (__imp_?sputn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA_JPEBD_J@Z)

我已经尝试将 libcmtMSVCRT 添加到我的链接器依赖项中,但没有成功。

似乎我的 DLL 无法使用 /MT 标志进行编译,无论是否链接 libprotobuf我错过了什么?

最佳答案

通读protobuf CMakeLists后,我找到了以下解决方案:

-Dprotobuf_MSVC_STATIC_RUNTIME=OFF

必须传递给 cmake 命令,使 protobuf 使用 /MD 而不是 /MT

关于c++ - 无法与标准库链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40494713/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com