[转载]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 文件的主要内容,如果未能解决你的问题,请参考以下文章