为 iOS 编译 artoolkitx-calibration: 指定了 C 链接,但 returns 用户定义类型 'cv::Size' 与 C 不兼容

Compiling artoolkitx-calibration for iOS: C-linkage specified, but returns user-defined type 'cv::Size' which is incompatible with C

我想 运行 iOS 上的 ARToolKitX Calibration app。不幸的是,该应用程序在 App Store 中不可用,所以我想我必须自己编译它。幸运的是,我有一个活跃的 Apple Developer 帐户...

所以我从GitHub:

那里得到了源代码
git clone https://github.com/artoolkitx/artoolkitx-calibration
cd artoolkitx-calibration

然后我将 ARToolKitX iOS 库从 https://github.com/artoolkitx/artoolkitx/releases/download and I followed the steps in the iOS section of the build.sh 脚本下载到 link 这个 SDK 到 Xcode 项目。

我在 macOS High Sierra 10.13.3 上用 Xcode 9.3 打开了项目。

我从 SourceForge 下载了 opencv2.framework 库并 link 编辑了它:https://sourceforge.net/projects/opencvlibrary/files/opencv-ios/

Xcode 报告了 line 61 of prefs.hpp 中的一个问题:

cv::Size getPreferencesCalibrationPatternSize(void *preferences);

'getPreferencesCalibrationPatternSize' has C-linkage specified, but returns user-defined type 'cv::Size' (aka 'Size_') which is incompatible with C

如果能在此编译过程中获得更进一步的指示,我们将不胜感激!

我今天遇到了同样的问题。您需要确保您的源代码文件(通常是“.c”和“.h”文件)被解释为 C++ 头文件和源代码。对于这个特定的错误,追溯哪个文件调用了 cv::Size 并将其类型更改为 C++ header/source.

编译问题 was fixed 通过删除围绕 cv::Size 的错误生成用法的以下行:

#ifdef __cplusplus
extern "C" {
#endif

...

#ifdef __cplusplus
}
#endif