我在Obj-C代码中使用C ++对象。为此,我将C ++对象包装在ObjC对象中,而ObjC对象又使用不透明指针来访问C ++类。那东西正在发挥作用。
问题: C ++对象(例如CPPObj.cc)使用来自其他c ++头文件(例如ToolsCPP.h)的方法---当我尝试编译ObjC代码(例如Obj.mm)时,它抱怨这些方法未定义。
即使我直接在Obj.mm文件中包含ToolsCPP.h,它仍会抱怨。
丑陋的解决方案: 在CPPObj.cc中包含ToolsCPP.h中的所有必要方法,以便C ++对象完全自包含。这将是一个巨大的痛苦。
有没有更好/更容易/更合适的方法呢?
谢谢!
答案 0 :(得分:0)
听起来您希望将ToolsCPP代码(以及任何其他C ++依赖项)打包到库中,然后将其与Obj-C代码链接。
答案 1 :(得分:0)
我不知道您所看到的确切错误,但我怀疑您可能需要在.mm文件中使用extern“C”包装基于C的标头:
extern "C" {
#import "foo.h"
}
答案 2 :(得分:0)
你要么必须包装你需要的东西(例如使用objc方法),要么使用objc ++来允许客户端适当地使用c ++类型。
答案 3 :(得分:0)
由于这显然是一个链接器错误,这意味着“ToolsCPP.cc”中的代码,即与ToolsCPP.h对应的代码,不会被编译并与项目的其余部分链接。
检查ToolsCPP.cc是否包含在项目中并确认它实际上正在编译。