我有一个使用ffmpeg(纯C库)和OpenCV的iOS项目。
由于我使用OpenCV的C ++接口,因此我编写了objective-c ++,它是一个.mm
文件。但ffmpeg文件不正常,Xcode在链接阶段抱怨undefined symbol
。
我也在另一个.m
文件中使用ffmpeg,这没关系。所以我确定问题出在.mm
和用C编写的静态库。
答案 0 :(得分:1)
使用.mm时,你会得到c ++名称修改(而不是c名称修改)。
通过在c函数声明中添加“extern c”包装来修复(定义不需要)
extern "C" {
int somecallback(int param);
}
编辑: 通常c-header文件已经安排了这个包装,寻找类似于
的东西#if defined __cplusplus
extern "C" {
#endif
<。>在.h文件中,如果没有找到,则将#include放在ypur自己的包装器中。