【发布时间】:2018-03-18 14:41:17
【问题描述】:
我有三层:
- 核心 C++ 引擎
- iOS 音频包装器
- 演示 iOS 消费者项目
所以我是:
1)编译engine.a,它链接到加速框架。
2) 编译 wrapper.a,依赖于引擎并链接到 engine.a 和 加速框架强>。
到目前为止一切顺利。我可以建立wrapper.a。但看起来有些不对劲。我的包装代码正在使用 CoreAudio 调用。它正在获取实时麦克风数据。应该是报错吧?它应该要求我链接 AudioToolbox 或 AudioUnit 框架。
所以我不明白为什么那个库甚至可以编译。
3) 创建一个新的 iOS 项目,链接到 wrapper.a。
现在我遇到了 30 多个构建错误:
```
架构 x86_64 的未定义符号:
“vtable for std::exception”,引用自:
libfftDecoder.a(FFTDecoder.o) 中的 std::__1::bad_function_call::bad_function_call()
注意:缺少 vtable 通常意味着第一个非内联虚成员函数没有定义。
“std::__1::__thread_struct::__thread_struct()”,引用自: std::__1::thread::thread(void (DecoderThread::&&)(), DecoderThread&&) 在 libfftDecoder.a(FFTDecoder.o)
“std::__1::__throw_system_error(int, char const*)”,引用自: std::__1::thread::thread(void (DecoderThread::&&)(), DecoderThread&&) 在 libfftDecoder.a(FFTDecoder.o) : ```
谁能提出可能是什么问题?第一个错误看起来像“未能处理 C++ 构造”。
我应该提到,Xcode 在这个任务的上下文中非常令人失望。我在“构建阶段”选项卡中链接的项目并未一致地反映在相应项目的项目导航器的“框架”文件夹中。有时,即使构建成功,.a 也会显示为红色。
【问题讨论】:
-
PS 从什么时候 ``` 在 SO 上被破坏了?我尝试在上面使用它来将错误缩进为代码。
标签: xcode build static-libraries