2015-04-28 15 views
0

我需要在我的C++项目需要调用的外部函数使用库:(iOS)我如何从C++应用程序获取UIViewController?

SetGameViewController(UIViewController* gameViewController) 

我有目标C和iOS的零知识呢。我需要获得UIViewController并将其传递给该函数。

所以这段代码应该得到的UIViewController:

UIWindow *window = [UIApplication sharedApplication].keyWindow; 
UIViewController *rootViewController = window.rootViewController; 

我还添加了这样导入:

Expected unqualified-id 
Unknown type name 'NSString' 

我已经开始学习:

#if defined(OS_IPHONE) 
    #import <UIKit/UIKit.h> 
#endif 

我得到这样的编译器错误Objective C并阅读了一些文章,但还没有得到更进一步的发展。 所以基本上我的问题是我如何基本导入和使用C++代码中的Objective C代码,以便我可以获取和使用UIViewController?

回答

3

最简单的方法是使用扩展名“.mm”重命名源文件 - 然后将其编译为objective-C++,这意味着您可以获得C++的所有奇迹,同时仍然可以与objective-c对象(计算指向NSObject派生的事物的指针)。

+0

是的,就是这样,我已经明白了。现在的问题是如何告诉premake.exe实用程序生成xcode项目以将.cpp文件标记为目标C++,因为此项目也需要在Windows上编译。 – Zingam

+0

因为uiviewcontroller不是Windows的东西,所以你需要一些条件编译魔术。我使用cmake,它完美地处理objective-C++。在任何情况下,clang都会根据文件扩展名 –

+0

做正确的事情。我们的方法是将函数声明为“extern”,并且我们使用premake来生成xcode项目。 – Zingam

相关问题