【发布时间】:2016-11-12 12:32:36
【问题描述】:
我有两个静态库和一个 macOs 应用程序(都在最新的 XCode 8.1 下)。
1) 第一个库(A),是ObjC++(混合了objc和c++/stl)
2)第二个(B)是纯ObjC,包含一些常见的类别(例如NSObject)
3) 该应用程序是 Swift 并且使用两个库
所有目标都使用相同的 c++ 标志(libc++11 等)构建,问题是:
1) 如果我将 -ObjC (和/或)-load_all 链接器标志添加到 App (与 lib B 个类别),然后我得到了许多“Undefined symbols for architecture x86_64”(全是关于 STL)
2) 如果我删除此链接器标志,则 App 编译正常,但在运行时我得到所有 lib B缺少选择器” /strong> 类别。
但是,如果我完全删除 lib B(将其所有源直接添加到 App 中)并分别删除 -ObjC/-load_all,那么 STL 链接的问题就解决了,但不幸的是,这对我来说不是正确的选择。所以我希望对你有所帮助,或者至少是一个解释。
谢谢!
【问题讨论】:
标签: c++ objective-c xcode macos linker