内部在具有不同版本的Visual Studio的静态LIB中使用STL
Use STL internally in a static lib with different versions of visual studio
我正在尝试将我的应用程序与构建的静态库链接到不同版本的Visual Studio(我正在使用VS2010,并且LIB使用VS2008构建)。静态LIB在内部使用STL,我会发现无法找到某些基本_STRING方法的链接错误。
我知道,如果静态LIB在其公共接口中使用STL,那么这是不可能的,因为STL对象是双手不兼容的。但这种情况并非如此。我正在调用的LIB的方法都没有使用STL,也没有将STL对象传递给LIB。但是在内部,静态LIB在其自身功能中使用STL。
看起来库中没有编译的STL代码,并且链接器正在尝试将STL链接到内部方法中。我的问题是有什么方法可以编译静态lib以静态链接与stl链接并在其中包含所有代码?
我应该提到我自己的应用程序也使用STL。但是似乎可以在两个版本中汇编两个版本,只要它们永远不会彼此传递。
如果要链接到 static 库,并且此库取决于标准C 库的版本 x ,则您的应用程序需要与版本 x 链接,除了您可能在应用程序中使用的版本 y 。
由于标准库的几个导出的符号名称,版本 x 和版本 y 将是相同的,您最终会出现链接器错误。
您可以将第三方库包装在DLL中吗?这将解决问题。
相关文章:
- cmake cuda在Windows上单独的编译静态LIB链接错误,但在Ubuntu上没有
- lib OSMesa 屏幕外上下文创建在C++中失败,但仅在静态链接时失败
- 如何添加其他CMAKE模块的静态LIB
- 静态库将转换为共享的lib符号隐藏
- 如何在Windows Cmake中设置DLIB作为静态安装的共享LIB
- 调试模式下的dlib静态lib错误
- 链接glew.lib作为带有日食的静态库
- QMAKE:同时使可执行文件和静态lib
- 静态地将Google Protobuf lib链接到DLL库中
- VS 2017 C 静态LIB与 /MD项目依赖性问题编辑
- 做循环静态链接的LIB会导致更大的输出尺寸
- 如何在python中使用c ++ .lib(c ++静态库)文件
- 在执行任何程序代码之前,通过静态 .lib 链接到 dll 的程序会发生什么情况
- lib文件是以独占静态方式链接的,还是需要专门编译(VS2015)
- buildroot:仅构建一个包裹作为共享和静态lib,所有其他包装仅共享
- 静态库(.lib)Visual Studio的代码覆盖范围
- 未解决的外部符号,带有静态lib,它使用了另一个静态lib
- 使用libcef_static.lib静态编译Chromium Embedded 3项目
- 无法与 libx264.lib 静态库链接
- 链接器找不到qwebp-lib-静态Qt5.3.2编译