🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
首先撰写 golang 程序 exportgo.go: ~~~ package main import "C" import "fmt" //export PrintBye func PrintBye() { fmt.Println("From DLL: Bye!") } //export Sum func Sum(a int, b int) int { return a + b; } func main() { // Need a main function to make CGO compile package as C shared library } ~~~ 编译成 DLL 文件: ~~~ go build -buildmode=c-shared -o exportgo.dll exportgo.go ~~~ 编译后得到 exportgo.dll 和 exportgo.h 两个文件。 参考 exportgo.h 文件中的函数定义,撰写 C# 文件 importgo.cs: ~~~ using System; using System.Runtime.InteropServices; namespace HelloWorld { class Hello { [DllImport("exportgo.dll", EntryPoint="PrintBye")] static extern void PrintBye(); [DllImport("exportgo.dll", EntryPoint="Sum")] static extern int Sum(int a, int b); static void Main() { Console.WriteLine("Hello World!"); PrintBye(); Console.WriteLine(Sum(33, 22)); } } } ~~~ 编译 CS 文件得到 exe ~~~ csc importgo.cs ~~~ 将 exe 和 dll 放在同一目录下,运行。 ~~~ >importgo.exe Hello World! From DLL: Bye! 55 ~~~ ![](https://box.kancloud.cn/032176b8778dbc41f1ce6b79a83d59c1_900x350.jpg)