如何在Objective-C项目中编译+链接Xcode中的C ++代码?

时间:2015-06-12 17:41:04

标签: c++ ios objective-c xcode objective-c++

我有一个包含大量Obj-C源和一些.cpp文件的iOS项目。 有一个C ++类CalibrationFileReader,我在Xcode 6中创建,它有一个.h和一个.cpp文件。我可以从Objective-C代码中使用该类。

我有第二对C ++文件(stereo_v3.hppstereo_v3.cpp),它们不包含类,只包含静态函数。那些我从外面加入到项目中的人。当我尝试使用其中一个函数(computePoseDifference)时,它编译得很好,但Xcode拒绝链接,抱怨

Undefined symbols for architecture arm64:
  "computePoseDifference(cv::Mat const&, cv::Mat const&, cv::Mat&, cv::Mat&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >)", referenced from:

我尝试的事情:

  1. 在Xcode中创建文件并将原始代码粘贴在其中
  2. 在我的目标的构建阶段中手动将.cpp文件添加到编译源(参见图像)。 enter image description here
  3. 没有解决问题。

1 个答案:

答案 0 :(得分:0)

好吧,事实证明Xcode不是罪魁祸首,但static修饰符我以函数的声明为前缀。所以问题还为时过早。我应该知道,但当然,静态链接使它们对其他翻译单元不可见。