ホームページ  >  記事  >  バックエンド開発  >  GolangでDLLを呼び出す方法

GolangでDLLを呼び出す方法

WBOY
WBOYオリジナル
2023-05-12 21:32:053675ブラウズ

Golang はプログラミング言語として、その強力な同時実行機能と効率的なパフォーマンスにより開発者に広く愛されています。実際の開発ではDLL(ダイナミックリンクライブラリ)ファイルを扱うこともありますが、GolangではDLLをどのように呼び出すかが重要な問題となります。この記事では、Golang が DLL を呼び出す方法と実際の例を紹介します。

1. Windows DLL の概要

Windows オペレーティング システムでは、DLL はダイナミック リンク ライブラリの略称であり、重要な種類の実行可能ファイルです。 DLL ファイルには、プログラム呼び出しのための一連の関数とデータが含まれています。これらの関数は、C/C、C#、Delphi などのさまざまなプログラミング言語を通じて呼び出すことができます。 Golang の DLL ファイルのインターフェイスを直接使用することもできます。

2. Go と DLL ライブラリ間の呼び出し

Golang では、DLL ファイルへの呼び出しは通常、cgo を使用して行われます。 cgo を使用する場合は、import "C" を使用して Go 言語と C 言語を接続する必要があります。 Golang と C 言語間の対話は、Golang で C 言語関数を定義し、cgo メカニズムを通じて Golang と C 言語をリンクすることで実現できます。以下では、実用的な例を使用して、Golang で DLL を呼び出す方法を示します。

3. 例

デモには次の DLL ダイナミック リンク ライブラリを使用します:

#include <stdio.h>

int add(int a, int b)
{
    return a + b;
}

これは、単純な加算関数を定義する単純な DLL ダイナミック リンク ライブラリです。 add は、2 つの整数の合計を返すために使用されます。以下では、Golang と C 言語間の対話と、次の手順で Golang が DLL を呼び出す方法を示します:

1. Go で C 言語関数を定義する

Go で C 言語関数を定義するこれは比較的単純で、次の手順に従うだけです。

package main

import (
    "fmt"
    "unsafe"
)

//#include <stdio.h>
import "C"

// 定义C函数
func Add(a, b int) int {
    return int(C.add(C.int(a), C.int(b)))
}

func main() {
    a := 3
    b := 4
    c := Add(a, b)
    fmt.Printf("%d + %d = %d
", a, b, c)
}

この例では、インポート "C" によって C 言語ライブラリをロードし、Golang コードで使用するために公開される Add 関数を定義します。 。なお、Add 関数では、C の add 関数を介して C 言語ダイナミック リンク ライブラリの add 関数を呼び出す必要があり、また、int 型を C.int 型に変換する必要があります。

2. コンパイル

コードの記述が完了したら、次のコマンドを使用して Golang でコンパイルする必要があります:

go build -o main.exe

3.

## を実行します。 # コンパイルを完了します 最後に、次のコマンドを使用してプログラムを実行します:

.main.exe

プログラムの出力が表示されます:

3 + 4 = 7

この時点で、Golang が次のコマンドを呼び出すプロセスが完了しました。 DLL。

4. 概要

この記事では、Golang と DLL ファイル間の対話について紹介し、具体的な実装は cgo を通じて完了します。実際には、Golang で C 言語関数を定義し、C 言語ダイナミック リンク ライブラリの関数を使用することで、Golang と DLL 間の対話を完了できます。実際、Golang は syscall パッケージを通じて DLL インターフェイスを呼び出すこともできますが、複雑な場合には Cgo を使用する方が便利な場合があります。したがって、Golang の DLL 呼び出しは重要な知識であり、実際の開発においては、Golang プログラムをより効率的に開発するために習得する必要があります。

以上がGolangでDLLを呼び出す方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。