4

我创建了一个运行一些 C++ (OpenCV) 代码的 Objective-C++ 项目。它运行良好,一切正常。但是后来我决定将这些例程作为子项目添加到我的主项目中,每当我尝试使用子项目类时都会出错。

问题是,我的 SUBPROJECT 使用.mm源文件,而我的 MAIN PROJECT 只使用.m源文件:在此处输入图像描述

每次我尝试分配一个类 DyOpenCV ( DyOpenCv *opencv = [DyOpenCv alloc]) 时,我都会收到很多错误:编译错误

这是将 Obj-C 与 Obj-Cpp 项目合并的提示吗?一旦我尝试从.m文件运行.mm文件,这是一个要使用的特殊界面吗?即使.mm文件来自子项目?是否有必要将我的子项目的所有库添加到我的项目中(我已经这样做了)?

干杯,

4

1 回答 1

7

您需要链接到 c++ 标准库。如果您的编译源阶段包含任何 c++ 文件,这通常会自动发生,但如果 c++ 全部包含在静态库中,那么您需要明确要求将其链接到最终的可执行文件。

检查子项目的构建设置。寻找 C++ 标准库构建选项。如果它设置为 libc++(llvm 标准库),则添加-lc++到应用程序的附加链接器标志。如果它设置为 libstdc++(gnu 库),则添加-lstdc++到应用程序的附加链接器标志。

于 2013-04-27T23:03:28.083 回答