gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 06:34:09 26 4
gpt4 key购买 nike

我有一个使用 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com