go 调用其他文件函数_【C# 调用 Go 语言】0x1 Hello Golang
C# 和 Golang 都不是世界上最好的語言。在不同的業(yè)務場景下,C# 和 Golang 各有所長。如果要編寫一個網(wǎng)絡程序,顯然 Golang 更擅長,而如果要編寫一個桌面 GUI 程序,那么 C# 簡直不要太爽。我們完全可以將兩者用在同一個項目中,各取所長。Golang 支持將源代碼編譯為動態(tài)鏈接庫(dll),這讓我們在 C# 調用 Golang 成為可能。
本篇代碼可以在:https://gitee.com/coderbusy/golang-with-csharp 找到。
如何在 C# 中調用 Golang 函數(shù)?
Go 語言提供了 CGO 機制,使得能夠在 Go 代碼中直接調用 C 的庫函數(shù),此外還支持在 C 語言中調用 Go 函數(shù),非常強大。Golang 支持將 Go 函數(shù)導出給 C 語言使用,那么也同樣可以給 C# 使用。
CGO 環(huán)境搭建
要使用 CGO 特性,需要安裝 C/C 構建工具鏈,在 macOS 和 Linux 下是要安裝好 GCC,在 Windows 下是需要安裝 MinGW 工具。如果你的電腦上已經(jīng)安裝好 GCC ,則可以跳過本小節(jié)。
關于 MinGW 的安裝網(wǎng)上已經(jīng)有很多教程,本篇將介紹一種更簡單的方法來安裝 MinGW :通過安裝 QT 來部署 MinGW 到本機(該方法來自:ha666)。QT 的安裝包中自帶了 MinGW 環(huán)境,我們只要安裝 QT 開發(fā)包,那么附帶的 MinGW 環(huán)境就安裝好了。
QT 的下載地址可以在:http://download.qt.io/archive/qt/?中找到,目前(2020年1月28日)最新的版本是 5.14.1 ,Windows 版的下載地址是:qt-opensource-windows-x86-5.14.1.exe 。
如果你沒有且不想創(chuàng)建 QT 的網(wǎng)絡賬戶,那么在運行 QT 的安裝文件之前,可以先斷開網(wǎng)絡,這樣就不會出現(xiàn) QT 賬戶的注冊和登錄界面:
斷網(wǎng)狀態(tài)下,不會出現(xiàn)賬號注冊和登錄界面,直接“Next”即可。安裝過程中無需更改默認的安裝目錄,在“選擇組件”頁面時,勾選 MinGW 組件:
在“選擇組件”頁面中,勾選 MinGW 組件。在安裝完成之后,需要設置好環(huán)境變量 Go 編譯器才能找到 GCC 的安裝位置。如果你使用的軟件版本和我相同并且沒有更改默認安裝位置,那么這個要添加到 PATH 變量中的目錄地址應該是:C:\Qt\Qt5.14.0\Tools\mingw730_32\bin\
如果安裝正確并配置好了環(huán)境變量,那么在命令行中鍵入 gcc ,將會看到以下輸出:
Hello Golang
編寫 Golang 代碼,文件名為?main.go?。注意:雖然我們最終要生成動態(tài)鏈接庫,但是 main 函數(shù)仍是不可或缺的。
main.go接下來對 Go 源文件進行編譯,新建一個?make.bat?文件,填入一下指令并運行:
make.bat命令成功后,我們會得到兩個文件:HelloGolang.Interop.h?和?HelloGolang.Interop.dll?。
使用 Visual Studio 新建 HelloGolang 控制臺應用程序,并將生成的目標平臺設置為?x86?。將?HelloGolang.Interop.dll?添加到項目中,并設置為“始終復制”:
HelloGolang.csproj在?Program.cs?文件中,使用?DllImport?導入外部方法并調用:
Program.cs運行程序,那么將會在控制臺中看到以下輸出:
Hello Golang 輸出其中,第一行的?Hello World!?來自 C# 程序,第二行?Hello C#,I'm golang!?則來自 Go 程序。
總結
以上是生活随笔為你收集整理的go 调用其他文件函数_【C# 调用 Go 语言】0x1 Hello Golang的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 18款BJ212,柴油2.8T版本,离合
- 下一篇: 奔驰v260正驾座椅轨道护板怎么拆卸?