【C# 調用 Go 語言】


如何在 C# 中調用 Golang 函數?

Go 語言提供了 CGO 機制,使得能夠在 Go 代碼中直接調用 C 的庫函數,此外還支持在 C 語言中調用 Go 函數,非常強大。Golang 支持將 Go 函數導出給 C 語言使用,那么也同樣可以給 C# 使用。

CGO 環境搭建

要使用 CGO 特性,需要安裝 C/C 構建工具鏈,在 macOS 和 Linux 下是要安裝好 GCC,在 Windows 下是需要安裝 MinGW 工具。如果你的電腦上已經安裝好 GCC ,則可以跳過本小節。

關於 MinGW 的安裝網上已經有很多教程,本篇將介紹一種更簡單的方法來安裝 MinGW :通過安裝 QT 來部署 MinGW 到本機(該方法來自:ha666)。QT 的安裝包中自帶了 MinGW 環境,我們只要安裝 QT 開發包,那么附帶的 MinGW 環境就安裝好了。

QT 的下載地址可以在:http://download.qt.io/archive/qt/ 中找到,目前(2020年1月28日)最新的版本是 5.14.1 ,Windows 版的下載地址是:qt-opensource-windows-x86-5.14.1.exe 。

如果你沒有且不想創建 QT 的網絡賬戶,那么在運行 QT 的安裝文件之前,可以先斷開網絡,這樣就不會出現 QT 賬戶的注冊和登錄界面:

 在“選擇組件”頁面中,勾選 MinGW 組件。

 

在安裝完成之后,需要設置好環境變量 Go 編譯器才能找到 GCC 的安裝位置。如果你使用的軟件版本和我相同並且沒有更改默認安裝位置,那么這個要添加到 PATH 變量中的目錄地址應該是:C:\Qt\Qt5.14.0\Tools\mingw730_32\bin\

如果安裝正確並配置好了環境變量,那么在命令行中鍵入 gcc ,將會看到以下輸出:

 

 

 

 

Hello Golang

編寫 Golang 代碼,文件名為 main.go 。注意:雖然我們最終要生成動態鏈接庫,但是 main 函數仍是不可或缺的。

 

 

 

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 程序。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM