gpt4 book ai didi

c++ - 你能将 C++ 类导入到任何 Obj-C 头文件中吗?

转载 作者:行者123 更新时间:2023-11-28 06:53:51 25 4
gpt4 key购买 nike

我尝试将一些第 3 方源代码集成到我的应用程序中。大部分代码都是用 C++ 编写的,并且在他们的示例中运行良好。我将该原始代码复制到我的项目中,但现在它失败了,因为它在 Obj-C header 中看到了 C++。

更新:

有问题的源代码文件称为“SampleApplicationSession.mm”,并且关联“SampleApplicationSession.h”。 SampleApplicationSession.h 导入 C++ header ,并导出几个使用在这些 header 中找到的类型的方法,如下所示:

  • (void) onQCARUpdate: (QCAR::State *) state;

如果我导入包含这些类型的 C++ header ,我会得到错误:

未知类型名称“命名空间”

所以尽管代码是 .mm,编译器似乎也没有将 header 识别为 Obj-C++。

最佳答案

QCAR::State 的问题在于它无法使用 C 或纯 Objective-C 代码进行编译。这是我在类似情况下使用的解决方案:

#ifdef __cplusplus
typedef QCAR::State QCARState;
#else
typedef struct QCARState__ QCARState;
#endif

- (void)onQCARUpdate:(QCARState *)state;

现在每种语言都很开心。您甚至可以让纯 C 代码绕过 QCARState* 指针。或者,如果您有 QCARState* 类型的属性,您可以用普通的 Objective-C 代码编写

someObject.qcarState = otherObject.qcarState

并且有效。举个例子。

关于c++ - 你能将 C++ 类导入到任何 Obj-C 头文件中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23430092/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com