用 Microsoft Visual C# Express 寫 MacOSX 的視窗程式(c)toki kanno, 2006. All rights reserved.版權所有,歡迎連結,但轉載至他處請來信詢問 作者Mail: toki_kanno(@)yahoo(.)com(.)tw (括號自行去除)
雖然 Apple 最近賣電腦的業績是節節高漲,不過國內寫Mac程式的人卻沒有感覺明顯的增加, 其中程式開發平台上的各種轉換應該就是一個問題。 所以,今天這篇文章要教大家的就是,如何使用 首先,再次強調,本人沒瘋XD 本文的關鍵字只有幾個 C#、Mono Framework、wx.NET,如果這些字你一看就明白的話......靠北,你還在這幹嘛,快回去寫程式吧你:P 這次的任務需要以下的東西:
![]() 微軟為了推廣自家的Visual Studio所推出的簡易版本的 C# 編譯環境。不過重點是,這東西是完全免費的。在以下網址可以免費取得。 http://msdn.microsoft.com/vstudio/express/visualcsharp/download/ Open source 版本的 C# 開發環境,由於微軟的 .NET Framework 採用的是一種類似 Java VM 的觀念, 只要在所在平台有可以運行的Common Language Infrastructure (CLI) virtual machine, 則所有符合CLR(Common Language Runtime)標準寫出來的 code,都可以在不用重新編譯的情形下直接被執行。 也就是說,使用微軟 VC# 寫出來的程式,只要在MacOSX有對應的VM(和Library),就可以被執行! Mono Framework 的官方網頁如下 http://www.mono-project.com/Main_Page 寫這篇文章時最新版本的 Mono runtime binary for MacOSX: Mono 1.1.17 For MacOSX (PPC) Mono 1.1.17 For MacOSX (Intel) 跨平台視窗 GUI 程式庫 wxWidgets 的 DotNet Framework 重新包裝版(好長的名字,不過說真的,這名字我亂翻的(逃)), 由於 Mono 下的 System.Windows.Form 部分還不是很好用,改用這個跨平台GUI程式庫代替。我們一共要抓兩個版本,Win32版和MacOSX版。 官網: http://wxnet.sourceforge.net/ 寫這篇文章時最新版本的 wx.NET Binary: wx.NET 0.72 binary for Win32 wx.NET 0.72 binary for MacOSX 開始寫程式啦
![]() 類別為 Empty Project,我們先隨便取個名字叫wx.Test ![]() 加入一些我們等下要用到的 reference (這動作和 C++ 裡指定 Library 位置差不多) ![]() 從 .NET 分頁加入 System 和 System.Drawing 兩項 reference ![]() 使用 Browse 的方式加入 wx.NET.dll ![]() 都完成後 Solution Explorer 看起來應該長這樣 ![]() 首先先由 Project->Add New Item 選單加入一個新的檔案 MainForm.cs,類型是「code file」 ![]() 把這些 code key 上去吧 XD 不要懷疑……就只有這麼多行而以 ![]() 按下偉大的「F5」,應該用不到2秒就會跑出一個DOS視窗,以及螢幕的左上角會出現一個100x100大小的普通Window視窗。 如果你執行時出現找不到 wx-c.dll 的訊息,你可以在wx.NET的Bin目錄下會找到它,請把它copy到 Windows\System32 下面 ![]() 會出現Dos視窗實在超礙眼的,讓我們微調一下, 由Project->wx.Test Properties ... 可以開啟一個新的分頁,將其中 Output Type 改成「Windows Application」。 這樣就再也不會有DOS視窗來亂啦 其實.....接下來才是麻煩的地方(你說什麼!!!XD) 因為我們會用到一些命令列的東西。 首先先讓我們做一件最重要的事,那就是……把Mono先裝起來: ![]() 基本上這件工作一點也不難,抓了dmg回來之後,把dmg掛起來,裡面的安裝檔點兩下,Continue/Next一直按就好了。 接下來請建立一個如下的目錄結構 wx.Test.app\Contents\MacOS\ (白話文就是 wx.Test.app 是個目錄,它下面有個目錄叫 Contents, Contents這個目錄下面有個目錄叫MacOS……好累囧) 以上換成 Terminal 指令就是(請注意大小寫) mkdir wx.Test.app cd wx.Test.app mkdir Contents cd Contents mkdir MacOS 在建完目錄之後,請把剛剛在Windows下complier完成的wx.Test.exe copy 到 MacOS 的目錄下(請 copy 在 bin\Release 下面的那個) 同時也請把 wx.NET-0.7.2-MacOSX-Build.dmg 裡面的 wx.NET.dll 和 wx.NET.dll.config copy 到 MacOS 目錄下 最後請在 MacOS 的目錄下建立一個純文字檔案,其檔名為 wx.Test,並且請將該純文字檔案的權限改成可執行。 以下是最後如果在該目錄下使用 ls 指令時應該有的檔案和其權限設定
最後,在wx.Test中寫入以下的內容:
其中 $ENV{DYLD_LIBRARY_PATH} = "/Volumes/wx.NET-0.7.2-MacOSX-Build/Bin/:$ENV{DYLD_LIBRARY_PATH}"; 中的路徑為你放置 wx-c.dylib 的路徑(一般會建議把它copy到/usr/lib下面),上面這個路徑是預設你有把 wx.NET-0.7.2-MacOSX-Build.dmg mount 起來的情形。 ![]() 在做完上一項所提到的所有的事項之後,回到 wx.Test.app 所在的目錄,你會發現它被OSX辨視成一個應用程式(而不是目錄), 滑鼠移過去double click,如果一切正常,你應該也會看到如圖一樣的 100x100 大小的視窗出現在桌面的左上角。 附錄附上上面程式的VC# project 檔案做為參考。wx.Test.zip |