首頁 >後端開發 >Golang >Golang能封裝成dll嗎

Golang能封裝成dll嗎

angryTom
angryTom原創
2020-03-17 16:09:184391瀏覽

Golang能封裝成dll嗎

Golang能封裝成dll嗎

#Golang可以將程式編譯成DLL文件,具體做法如下:

1、golang 編譯dll 過程中需要用到gcc,所以先安裝MinGW。

windows 64 位元系統應下載MinGW 的64 位元版本:https://sourceforge.net/projects/mingw-w64/

2、下載後執行 mingw-w64-install.exe ,完成MingGW 的安裝。

(推薦學習:網站建立教學

3、先寫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
}

4、編譯成DLL 檔:

go build -buildmode=c-shared -o exportgo.dll exportgo.go

編譯後得到 exportgo.dll exportgo.h 兩個檔案。

5、參考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知識請關注PHP中文網golang教學欄位。

以上是Golang能封裝成dll嗎的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn