我有一个使用 ffmpeg(纯 C 库)和 OpenCV 的 iOS 项目。
由于我使用 OpenCV 的 C++ 接口(interface),我编写了一个 .mm
文件的 objective-c++。但是 ffmpeg 文件不正常,Xcode 在链接阶段提示 undefined symbol
。
我还在另一个.m
文件中使用了ffmpeg,没问题。所以我确定问题出在 .mm
和用 C 编写的静态库上。
最佳答案
当使用 .mm 时,您会得到 C++ 名称修饰(与 C 名称修饰相反)。
通过向您的 c 函数声明添加“extern c”包装器来修复(定义不需要)
extern "C" {
int somecallback(int param);
}
编辑: 通常 c-header 文件已经安排了这种包装,寻找类似于
的东西#if defined __cplusplus
extern "C" {
#endif
在 .h 文件中,如果找不到,则将 #include 放入 ypur 自己的包装器中。
关于c++ - ObjC++ 调用用 C 编写的静态库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27035888/