用Nim語言開發windows GUI圖形介面程式

來源:互聯網
上載者:User

標籤:

前言

本文得到了“樂師”的大力支援,

我們一起偵錯工具到深夜,要是沒有他的幫忙,

我不知道要多久才能邁過這道坎,

另外“歸心”還有其他人也提供了協助,

他們都來自於QQ群:“Nim開發集中營”469329878;

感興趣的朋友,可以加這個群一起討論

 

配置GUI開發環境

我在這篇部落格中,寫到了Nim開發環境的搭建

那篇部落格中說MingW是必選的,

這對於開發一個普通的Nim程式來說,沒有問題,但要開發GUI程式,還不夠

官方安裝包中所包含的的MingW安裝包有點問題

如果你用編譯命令:--app:gui,編譯你的程式,將會出錯

如果你不用這個編譯命令,那麼在你執行你的程式時,會先開啟一個命令列視窗,再開啟你的GUI程式。

具體為什麼會出錯,我還不是很清楚

(有可能那個MingW的安裝包是64位的,也有可能那個安裝包是閹割版的)

 

所以我們要自己安裝一個MingW,

Nim官方網站推薦到MingW官網去下載64位的安裝包,

MingW官網,要求你先裝一個安裝工具,再通過安裝工具下載你需要的MingW程式

(說實在的,那個安裝工具會搞的你很亂)

我是用“樂師”推薦給我的TDM安裝工具安裝MingW的

 

要注意的是,一定要安裝32位的MinGW

我現在也不是很清楚為什麼64位的MingGW為什麼不行

安裝好之後需要配置一下環境變數,把如下路徑配置到環境變數中:

C:\TDM-GCC-32\bin

(當然你如果裝到別的路徑下去了,那就另當別論)

 

然後你應該把Nim的bin路徑也配置到環境變數中:

C:\Nim\bin

這樣你就可以使用命令列來編譯你的程式了

(你用aporia官方提供的IDE來編譯你的程式,預設是沒有設定--app:gui開關的)

 

開發GUI程式

好下面我們寫個程式

# test a Windows GUI applicationimport  windows#proc MessageBox(hWnd: int, lpText, lpCaption: CString, uType: uint): int#  {stdcall, import: "MessageBox", header: "<windows.h>"}discard MessageBox(0, "中文試試", "Nimrod GUI Application", 0)

在這個程式中我們使用了windows模組

你可以在這裡看到windows模組提供的API:http://nim-lang.org/docs/windows.html

你還可以使用IUP模組或GTK模組開發GUI程式

 

 

編譯並執行程式

然後通過下面的命令列,來編譯這個程式:

nim c --app:gui -d:release  wingui.nim

註:

nim是編譯器

c是compile的縮寫

-app:gui是編譯成gui程式的開關

-d:release是release編譯開關

wingui.nim是程式源檔案

這行命令必須在程式源檔案所在目錄下執行

命令執行完成後,在同目錄下會產生可執行檔

運行這個程式,你會發現中文亂碼:

這是你只要把源碼檔案改成ANSI或者gb2312編碼,重新儲存

然後再編譯一次,就好了

 

用Nim語言開發windows GUI圖形介面程式

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.