我很難配置一個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 = ...參數只是映射到適當的庫鏈接;這就是爲什麼你需要在鏈接時手動指定另一個。 –