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

How do I compile + link C++ code in Xcode in an Objective-C project?

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

我有第二对 C++ 文件(stereo_v3.hppstereo_v3.cpp),它们不包含 class,但只包含静态函数。那些我从外部添加到项目中的。当我尝试使用其中一个函数 (computePoseDifference) 时,它编译正常但 Xcode 拒绝 link,抱怨

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 文件添加到 编译源 中的 构建阶段 (见图)。

问题都没有解决。

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