ObjC ++调用用C编写的静态库

时间:2014-11-20 09:23:28

标签: c++ ios c opencv ffmpeg

我有一个使用ffmpeg(纯C库)和OpenCV的iOS项目。

由于我使用OpenCV的C ++接口,因此我编写了objective-c ++,它是一个.mm文件。但ffmpeg文件不正常,Xcode在链接阶段抱怨undefined symbol

我也在另一个.m文件中使用ffmpeg,这没关系。所以我确定问题出在.mm和用C编写的静态库。

1 个答案:

答案 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自己的包装器中。