我正在尝试将 C++ 与 Objective-C 一起使用。我的任务迫使我只将 C++ 用于跨平台核心。目标是在不同平台上重用核心,只重写图形界面。我非常了解 Objective-C,还有一些 C++。但是,当我尝试将它们一起使用时,会出现大量错误。
例如:
CppFile.cpp
#include "ObjCFile.h"
int main() {
ObjCFile *objCFile;
}
ObjCFile.h
#import <UIKit/UIKit.h>
@interface ObjCFile : UIViewController
- (void)showInterface;
...
对于上面的两个文件,我得到一些看似完全无关的东西的错误,例如
undefined NSString
等等。
我试图在 Google 和 StackOverflow 上寻找这个问题的答案,但我还没有找到任何有帮助的东西。我认为混合 Objective-C 和 C++ 应该很容易,所以我错过了什么?
如果在组合两种语言时出现太多错误,则需要查看 C++ 文件中的
#include
。你不能 include
UIKit 或 C++ 文件中的其他特定库! XCode 变得疯狂并显示数百个错误。
要解决这个问题,您需要一个使用 Objective-C++ 的bridge。注意细节!
Bridge.hh(不包含 ObjCFile.h!)
class Bridge {
public:
...
void showInterface();
}
Bridge.mm(在这里包含你的 Objective-C 头文件)
#import "ObjCFile.h"
void Bridge::showInterface() {
ObjCFile *objCFile;
[objcFile showInterface];
}
新建 CppFile.cpp
#include "Bridge.hh"
int main() {
Bridge *bridge;
bridge->showInterface();
}
就是这样!
我看过的许多文章与我的文章similar但是他们omit关于XCode库的信息。 这让我很困惑。