2015-08-24 38 views
0

我有以下文件:如何使用C++参数调用Objective C++函数?

  • MyCppClass.cpp - 纯C++

  • MyObjCppClass.h - 纯C++类的定义与C++函数原型。

  • MyObjCppClass.mm - 带有使用ObjC的函数体的C++样式函数。有C++风格的功能,而不是ObjC。

纯粹的C++类包括ObjC++头和新闻MyObjCppClass的实例。然后我尝试在ObjCpp类上调用函数。问题是,当我尝试调用需要参数的函数时。

如果我没有参数调用函数,一切都很好。但是,如果我尝试调用一个带参数的函数,那么在编译时会出现符号未找到链接错误。我最初认为这个名字被破坏,但认为这不是问题,因为它们都是纯C++。即使我从身体中移除ObjC,也会得到同样的错误。我很好奇,如果我错过了一步?

重要的是要注意,我传入的参数引用了静态链接库中包含的纯C++对象。它似乎只是一个问题,因为我可以在函数体内使用它们而没有任何问题。

我使用的是Xcode 6.4,C++ 11和Clang。

任何帮助,将不胜感激。

+1

没有任何代码,很难说出发生了什么。你是否在使用模板? – dreamlax

+0

找不到什么符号?他们是ObjC类吗? C++类?系统的东西?某个.m文件是否还包含其中一个标题?你的ObjC++头部可能包含或使用ObjC的东西?如果没有更多的信息或者更好的(最小的)示例代码来展示这个问题,我们就无法提供帮助。 – uliwitness

回答

0

对不起,我应该添加更多信息和代码。事实证明,这是我的一个愚蠢的错误。

我已经忘记了包含该类的名称后面跟着两个冒号,前面有参数的函数名称。

所以我有问题是这样的:

void functionThatTakesArgs(SomeClass& someClass) { } 

时,我真的应该有什么样的是:

MyObjCppClass::functionThatTakesArgs(SomeClass& someClass) { } 

希望这可以帮助别人。发生是一个愚蠢的错误。