gpt4 book ai didi

c++ - 在具有不同版本的 visual studio 的静态库中内部使用 STL

转载 作者:行者123 更新时间:2023-11-28 03:28:54 25 4
gpt4 key购买 nike

我正在尝试将我的应用程序与在不同版本的 Visual Studio 中构建的静态库链接(我使用的是 VS2010,而该库是使用 VS2008 构建的)。静态库在内部使用 STL,我收到链接器错误,无法找到某些 basic_string 方法。

我知道如果静态库在其公共(public)接口(interface)中使用 STL 那么这是不可能的,因为 STL 对象是二进制不兼容的。但这种情况并非如此。我正在调用的库中的所有方法都没有使用 STL,并且我没有将任何 STL 对象传递给库。但在内部,静态库在它自己的函数中使用了 STL。

看起来该库没有将 STL 代码编译到其中,并且链接器正在尝试将 STL 链接到内部方法中。我的问题是有什么方法可以编译静态库以静态链接到 STL 并将所有代码包含在其中?

我应该提一下,我自己的应用程序也使用了 STL。但似乎两个版本都可以编译,前提是它们永远不会相互传递。

最佳答案

如果您要链接到一个static 库,并且该库依赖于标准 C++ 库的 X 版本,那么您的应用程序需要与版本链接X,除了您可能在应用程序中使用的 Y 版本。

由于标准库的版本 X 和版本 Y 的几个导出符号名称相同,因此您最终会遇到链接器错误。

能不能把第三方库封装成一个DLL?这将解决问题。

关于c++ - 在具有不同版本的 visual studio 的静态库中内部使用 STL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13146943/

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