[转载]Golang 编译成 DLL 文件

Posted Golang语言社区

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[转载]Golang 编译成 DLL 文件相关的知识,希望对你有一定的参考价值。

首先撰写 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

以上是关于[转载]Golang 编译成 DLL 文件的主要内容,如果未能解决你的问题,请参考以下文章

Golang 编译生成 DLL 文件(简明教程)

被测试的代码应该编译成 DLL 还是可执行文件?

将头文件编译成DLL

将 Python 代码编译成 exe 文件,仅调用所需的 DLL

golang编译dll给C#调用

代码片段 - Golang 实现简单的 Web 服务器