gpt4 book ai didi

visual-studio-2010 - Visual Studio - 防止链接静态库

转载 作者:行者123 更新时间:2023-12-01 14:28:20 24 4
gpt4 key购买 nike

我正在 Visual Studio 2010 中创建静态库。该库将与我的另一个应用程序静态链接以生成 .exe。问题是我希望我的 .exe 静态链接到 C 和 C++ 库(不想依赖 msvcp100.dll 和 msvcr100.dll)。但无论我做什么,我都无法让它正常工作。

如果我将我的静态库与静态 C 和 C++ 库链接,那么我无法编译 .exe - 链接器提示“已定义的符号”。

如果我将我的静态库与 C 和 C++ DLL 链接,那么我的 .exe 最终会依赖于 msvcp100.dll 和 msvcr100.dll。

只有在我的 .exe 中链接时,我如何告诉 VS 将我的静态库与静态 C 和 C++ 库链接?

编辑

这是静态库和 .exe 用户/MT(即运行时库的静态链接)时的 fre 链接器错误:

1>msvcrt.lib(ti_inst.obj) : error LNK2005: "private: __thiscall type_info::type_info(class type_info const &)" (??0type_info@@AAE@ABV0@@Z) already defined in LIBCMT.lib(typinfo.obj)
1>msvcprt.lib(MSVCP100.dll) : error LNK2005: "public: class std::locale::facet * __thiscall std::locale::facet::_Decref(void)" (?_Decref@facet@locale@std@@QAEPAV123@XZ) already defined in re2_release.lib(regexp.obj)
1>msvcprt.lib(MSVCP100.dll) : error LNK2005: "protected: virtual class std::basic_streambuf<char,struct std::char_traits<char> > * __thiscall std::basic_streambuf<char,struct std::char_traits<char> >::setbuf(char *,__int64)" (?setbuf@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEPAV12@PAD_J@Z) already defined in re2_release.lib(regexp.obj)
1>msvcrt.lib(MSVCR100.dll) : error LNK2005: _strtoul already defined in LIBCMT.lib(strtol.obj)
1>LIBCMT.lib(crt0init.obj) : warning LNK4098: defaultlib 'msvcrt.lib' conflicts with use of other libs; use /NODEFAULTLIB:library

如果我设置/NODEFAULTLIB:LIBCMT,则来自 mscvrt.lib 的错误消失,但 msvcprt.lib 错误仍然存​​在。

最佳答案

我遇到了这个问题,libriks 解决方案解决了它。对于那些跳过阅读评论的人,我将在这里引用他的话:

Some module is not using static linking of the runtime library, because your linker errors >show "msvcrt.lib" which is the import library for the DLL version. Look more carefully >through your project settings, and any other libraries you link to, making sure EVERYTHING is >using /MT.

关于visual-studio-2010 - Visual Studio - 防止链接静态库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7744231/

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