多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
首先撰写 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)