2011-05-25 113 views
0

我在Obj-C代码中使用C++对象。为此,我将ObjC对象中的C++对象封装起来,然后使用不透明的指针访问C++类。那东西正在工作。从Obj-C/Obj-C++使用C++对象 - 调用外部方法

问题: C++对象(例如CPPObj.cc)使用来自其他C++头文件(例如ToolsCPP.h)的方法---当我尝试编译ObjC代码(例如Obj.mm)时,它抱怨那些方法是未定义的。

即使我直接在Obj.mm文件中包含ToolsCPP.h,它仍然会抱怨。

丑陋的解决方案: 在CPPObj.cc中包含ToolsCPP.h中所有必需的方法,以便C++对象完全自包含。这将是一个巨大的痛苦。

有没有更好/更容易/正确的方法来做到这一点?

谢谢!

+2

如果您将编译器正在编写的确切错误消息放在一起,会很有帮助。 – ThomasW 2011-05-26 01:24:12

回答

0

听起来好像你想要将你的ToolsCPP代码(和任何其他C++依赖项)打包到一个库中,然后将它与Obj-C代码链接起来。

0

你要么必须包装需要(例如,使用objc方法)是什么,或者使用objC++允许客户端适当地使用C++类型。

+0

作者提到该文件是Obj.mm,所以看起来他使用的是objC++。 – ThomasW 2011-05-26 01:52:42

0

由于这显然是一个链接器错误,这意味着来自“ToolsCPP.cc”的代码(即与ToolsCPP.h对应的代码)没有被编译并且与您的项目的其余部分链接。

检查ToolsCPP.cc是否包含在您的项目中,并确认它实际上正在编译。