2015-04-28 78 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

相關問題