Win8探索學習筆記(3)基於C++的metro程式基礎

來源:互聯網
上載者:User

本來打算像上一篇一樣看看基於C++的Metro程式都有些什麼內容的,據說Metro支援native c++,結果。。。尼瑪昨天建立一個c++ metro工程都可以跑的,今天就見鬼了,隨便建一個c++工程自己都編譯不過去,尼瑪VS11的bug也太多了。看了看預設產生的c++代碼,裡面什麼partial ref的,應該都是託管c++才有的關鍵字吧?(PS:不熟悉託管c++,所以不太清楚如何知道一段代碼屬於託管c++。)懷疑:MS的C++ Metro也是使用託管C++構建那個UI。所謂的Metro支援native
C++,應該是說可以使用native c++構建一些模組,給其它的Metro程式(JS/managed c++/c#/VB)去調用而已吧。這個裡面,對於MS來說,根本不算新東西吧。不知道那個WinRT到底體現在哪裡,到底是native c++實現的還是託管的玩意。

總結:從目前瞭解的情況,實在沒有看到win8的新內容到底在哪裡,除了那個metro style的UI是一個建立,程式的本質上,貌似沒看到實質性的創新,無非就是:1. 借用了一些現有的“流行”的模式/實現,比如HTML/JS的支援,比如store的模式。2. 換了一些介面定義,弄了一些“忽悠”人的各種技術詞彙。當然,這隻是針對C++的角度來看的,對於.net來說,或許有很多新的東西,比如可以更好的調用native c++什麼的,具體我就不清楚了,不熟悉.net!慢慢來吧,有了新的發現再繼續研究,至少,就目前的preview來看,沒有更多興趣去研究了。:(

不過,從另外來說,其實MS這樣也是沒有錯誤的,畢竟那個metro風格,用在PC上還是不適合的,win8可能主要考慮的新的東西都在觸摸裝置(平板)上的,所以,自然,對於這些應用,程式的效率也是不重要的,用託管的玩意、JS這些去整一些介面神馬的就夠了,可能我對MS的要求高了點!

說明:這裡的描述都是個人看法,很可能錯了,畢竟主流的聲音都是說winRT是一個API結合,不是一個運行時,都說基於C++的是native的,待研究啊。。。

http://bbs.pediy.com/archive/index.php?t-140353.html

http://www.codeproject.com/KB/cpp/WinRTVisualCppIntro.aspx

http://kb.cnblogs.com/page/116862/

http://webservices.ctocio.com.cn/138/12201138.shtml

http://topic.csdn.net/u/20110915/08/e4b7e628-a412-49d4-a8c8-0d4002d94635.html

http://tirania.org/blog/archive/2011/Sep-15.html

http://msdn.microsoft.com/en-us/library/windows/apps/hh454062(v=VS.110).aspx(MSDN,WinRT文檔)

補充:

上面是曾經的一點想法,現在看來,WinRT是基於COM的,使用C++的Metro程式理論上是可能完全native的

這裡要補充的一點是,上面提到了用VS11建立一個C++工程突然不靈了,自己都編譯不過去,現在居然被我自己給找到解決方案了,確實應該是VS11的bug。其編譯錯誤訊息是:

Error : Manifest references file 'hellometro_withcpp.exe' which is not part of the payload.

找了很久沒找到解決方案,類似的文章找到了"http://social.msdn.microsoft.com/Forums/zh-SG/winappswithhtml5/thread/88842e72-a620-4ee7-9a6a-d0ba52a36240",但是這個文章很容易理解,但是我這裡的錯誤是exe的問題,尼瑪exe不是VS自己產生的。經過仔細分析,發現exe是產生了,開啟manifest檔案看看,發現裡面的檔案名稱居然被VS偷換了,我的工程命名是hellometro_withCPP,所以得到的exe是hellometro_withCPP.exe,但是那個VS自己產生的manifest居然是小寫!手動修改namifest就可以build通過了。所以:如果你使用C++的metro工程,工程名不要使用大寫字母就不會遇到這個問題了!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.