使用Objective C类实例调用C函数

Call C function using Objective C class instance

本文关键字:调用 函数 实例 Objective 使用      更新时间:2023-10-16

我有一个Objective C类,里面有一个C类型的方法。我必须用我的代码链接一个C++库和一个C库。如果我从任何Objective C函数调用库,我会得到链接器错误,它找不到符号。

在目标c 中使用c++静态库

但我需要以某种方式调用C函数。还有其他选择吗?在只有C库的情况下,我可以从目标C方法进行库调用,但C++库不允许我这样做。我不知道为什么。

根据我的经验,如果程序使用任何C++类,您应该使用C++编译器进行链接,以便链接正确的C++库。只有C和C++,这是相当直接的。

把目标C放在一起,你可能会遇到一些困难——你的问题意味着你正在遇到一些困难。我没有试过,但是。。。

您需要确保链接了正确的C++库、正确的Objective C库以及您需要的任何零散的C库。如果您可以确定在构建Objective C程序时链接的库,那么只需与C++编译器链接并列出所需的Objective C和纯C库就足够安全了。祈祷吧,仅此而已。如果目标C有复杂的设置要求(以及C++的复杂要求),那么您可能仍然有困难。不过总的来说,你很可能没事

如果有明确经验的人说了一些不同的话,就采用他们的解决方案(如果对你有效的话)。但我能提供的最好的方法是"将程序与C++编译器链接起来"。

我不太确定是什么代码给您带来了问题,但如果您想从不同的C文件调用C++文件中定义的C样式函数,请确保将该函数标记为extern "C",以避免名称混乱。