参考问题:#import C++ Header File in iPhone/iPad Project 时出现问题
好吧,我的项目相对庞大,无法解决将项目文件的全部或部分更改为..m
.mm
File Inspector
那是因为我的同事和库作者都没有严格遵循 C++ 标准,例如分配void*
给int*
和其他各种违规行为。Objective C 将允许这些并且只是给出警告。
我想要的 C++ 头文件#import
是一个库。它在其标头中使用关键字命名空间.a
,而其实现在程序集文件中。这意味着几乎不可能破解它们。除此之外,我的项目还包括其他仅与 Objective C 兼容的库。
有谁知道如何解决这个问题?
我能想象的方式如下:
找到namespace的替代方案,但我仍然想
QCAR::Renderer
在我的项目中编写代码。告诉编译器识别 C++ 头文件(嗯,这可能是不可能的)
编辑
#ifdef __cplusplus
# include MyCPPHeader.h
#endif
如果我使用它,MyCPPHeader.h
真的会被包含在 Objective-C 环境中吗?我猜不会。这违反了不入侵图书馆的原则。
编辑
即使我更改了这些.mm
文件以包含该 C++ 标头,我也会收到一个链接错误消息Undefined symbols for architecture armv7:
。当我的 .mm
文件包含 其他库中.h
的标头时会发生这种情况。