2012-11-09 37 views
5

LLVM和GCC都支持Objective-C,我喜歡這種語言。因此,我有興趣使用LLVM或GCC來定位WinRT本機代碼,可能使用MinGW。通過LLVM或GCC定位WinRT

雖然我感興趣的問題應該很容易實現,但我找不到任何重要信息:LLV​​M或GCC支持是否針對WinRT?


Intel有一篇關於using Intel C++ Compiler 13.0 with Visual Studio 2012的文章,其中可能包含有用的提示。

另外,一個near duplicate question

+0

對於有人將GCC或LLVM移植到其中,WinRT可能太近了。如果你非常瞭解WinRT,你可以試試自己(可能從現有的一些東西開始)。然後請在適當的免費軟件許可下發布您的補丁。 –

+0

如果沒有MS的幫助,這可能是不可能的。 WinRT被鎖定。 –

+0

[英特爾頁面上面](https://software.intel.com/en-us/articles/experimenting-with-intel-c-compiler-130-and-windows-8-store-apps)只是討論獲取英特爾C/C++編譯器合作構建用於Windows應用商店的x86應用,例如基於x86-ISA的集合{Surface Pro,Surface Pro 2,臺式機,筆記本電腦......}。 [英特爾頁面上方](https://software.intel.com/en-us/articles/experimenting-with-intel-c-compiler-130-and-windows-8-store-apps)對英特爾編譯器沒有提及交叉編譯到競爭對手(即ARM)的ISA。 – optikos

回答

2

鏘現在有原生C和C++的完全支持Windows和原生ABI等。如果WinRT有C或C++ API,那麼您應該可以輕鬆地使用在Windows上使用Clang編譯的代碼來調用該API。

這並不是直接將ObjC連接到WinRT,但如果願意,您可以編寫代碼來構建這樣的連接。

0

目前,你堅持使用MSVC。儘管訪問API本身並不是不可能的(它基本上是COM和一些花裏胡哨的東西),但將它與Objective-C進行接口沒有跳過某些鉤子並不會很有趣。

我最初看到的一個問題是,Objective C不支持名稱空間,而從Objective C中使用WinRT API可能不會很有趣。該PPL可用於C++和C#還有的await關鍵字,但使用Objective-C的所有這些...Async方法......你可能不希望出現這種情況;)

+0

命名空間理論上可以通過將名稱空間實現爲一個類(一個'namespace-class')來模擬,它包含更多的名稱空間類以及實際的類等等;另一方面,我感興趣的是隻是能夠編譯任何東西 - 基本上,只需用一個按鈕打開Metro UI屏幕 - 從C使用MinGW。如果我可以使用MinGW中的C,我可以爲我的遊戲編寫一個封裝器,它使用Objective-C ;-) –

+0

另外,編譯器和鏈接器需要支持.winmd文件,所以我不認爲這是你所期望的任何時候。 –

+0

看起來像許多.winmd文件是普通的舊PE .dlls - http://www.codeproject.com/Articles/476957/WINMDplusFilesplusUnderplustheplusHood雖然有時它們只包含類描述/引用:http://mariusbancila.ro/blog/2011/10/30/winrt-and-winmd-files /也許我們可以通過動態加載.winmd並使用COM實例化對象來避免這種情況? –