0

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

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

但我需要以某种方式调用该 C 函数。有没有其他选择?如果只有 C 库,我可以从目标 C 方法进行库调用,但 C++ 库不允许我这样做。我不知道为什么。

4

2 回答 2

2

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

将 Objective C 加入其中,您可能会遇到一些困难——您的问题意味着您遇到了一些困难。这个我没试过,但是...

您需要确保链接了正确的 C++ 库、链接了正确的 Objective C 库以及您需要的任何杂散 C 库。如果您可以在构建 Objective C 程序时确定链接的库,那么只需与 C++ 编译器链接并列出您需要的 Objective C 和纯 C 库就足够安全了。手指交叉,仅此而已。如果对 Objective C 有复杂的设置要求(以及对 C++ 的复杂要求),那么您可能仍然会遇到困难。但总的来说,你可能会没事。

如果有明确经验的人说不同的话,请使用他们的解决方案(如果它适合您)。但我能提供的最好的方法是“将程序与 C++ 编译器链接”。

于 2012-10-10T14:49:37.913 回答
1

我不太确定是什么代码导致了您的问题,但是如果您想从不同的 C 文件调用在 C++ 文件中定义的 C 样式函数,请务必标记该函数extern "C"以避免名称混淆。

于 2012-10-10T14:42:40.167 回答