溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

Golang封裝成dll可以嗎?要怎么做

發(fā)布時(shí)間:2020-04-28 14:53:19 來(lái)源:億速云 閱讀:1930 作者:小新 欄目:編程語(yǔ)言

Golang封裝成dll可以嗎?要怎么做?可能有的人對(duì)Golang并不陌生,或者從來(lái)沒(méi)有了解過(guò)Golang。但是不用擔(dān)心,今天小編會(huì)以最簡(jiǎn)單的描述來(lái)講解Golang的原理,告訴大家Golang如何封裝成dll。

Golang封裝成dll可以嗎?要怎么做

Golang封裝成dll可以嗎?要怎么做

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

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

windows 64 位系統(tǒng)應(yīng)下載 MinGW 的 64 位版本: https://sourceforge.net/projects/mingw-w64/

2、下載后運(yùn)行 mingw-w64-install.exe,完成 MingGW 的安裝。

3、首先撰寫(xiě) 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 兩個(gè)文件。

5、參考 exportgo.h 文件中的函數(shù)定義,撰寫(xiě) 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 放在同一目錄下,運(yùn)行。

>importgo.exe
Hello World!
From DLL: Bye!
55

以上就是Golang封裝成dll可以嗎?要怎么做的詳細(xì)內(nèi)容了,看完之后是否有所收獲呢?如果如果想了解更多,歡迎來(lái)億速云行業(yè)資訊!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI