我很难配置一个iOS项目,它使用一个静态库链接到gcc使用的旧libstdC++。该库是32位和64位。在iOS项目中混合stdC++和libC++
有6个库(例如libssl.a),它们是32位的,必须更新。如果我从源代码编译这些库,它们将自动与libC++链接,这会导致我的链接器抱怨。
因此,这里是我的问题:
1)有没有什么办法有项目中使用的libstdC++里面一个静态库,并有其他人使用的libC++?
2)如何从源代码编译库(如libcrypto和libssh)并强制它们使用旧的libstdC++标准库?
3)有没有其他办法摆脱这个混乱?
谢谢。那是我正在寻找的答案。你知道是否存在一个命令行参数来链接一个库,然后只为这个库指定stl版本? – csotiriou
编译单个源文件时,需指定您正在使用哪个C++运行时,编译器将为该运行时使用适当的STL。那就是在编译时使用--stdlib = libC++或--stdlib = libstdC++。在链接时,--stdlib = ...参数只是映射到适当的库链接;这就是为什么你需要在链接时手动指定另一个。 –