Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk memanggil dll dalam golang

Bagaimana untuk memanggil dll dalam golang

WBOY
WBOYasal
2023-05-12 21:32:053670semak imbas

Sebagai bahasa pengaturcaraan, Golang disukai secara meluas oleh pembangun kerana keupayaan serentak yang berkuasa dan prestasi yang cekap. Dalam pembangunan sebenar, kami mungkin melibatkan interaksi dengan fail DLL (dynamic-link library) Cara memanggil DLL dalam Golang telah menjadi isu penting. Artikel ini akan memperkenalkan cara Golang memanggil DLL dan memberikan contoh praktikal.

1. Pengenalan kepada Windows DLL

Dalam sistem pengendalian Windows, DLL ialah singkatan pustaka pautan dinamik, yang merupakan jenis fail boleh laku yang penting. Fail DLL mengandungi satu siri fungsi dan data untuk panggilan program. Fungsi ini boleh dipanggil melalui bahasa pengaturcaraan yang berbeza, seperti C/C++, C# dan Delphi, dsb. Anda juga boleh terus menggunakan antara muka fail DLL di Golang.

2. Panggilan antara perpustakaan Go dan DLL

Di Golang, panggilan ke fail DLL biasanya dilakukan menggunakan cgo. Apabila menggunakan cgo, kita perlu menggunakan import "C" untuk menyambungkan bahasa Go dan C. Interaksi antara bahasa Golang dan C boleh dicapai dengan mentakrifkan fungsi bahasa C di Golang, dan kemudian menghubungkan bahasa Golang dan C melalui mekanisme cgo. Berikut menggunakan contoh praktikal untuk menunjukkan cara memanggil DLL dalam Golang.

3. Contoh

Kami akan menggunakan perpustakaan pautan dinamik DLL berikut untuk demonstrasi:

#include <stdio.h>

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

Ini ialah perpustakaan pautan dinamik DLL yang mentakrifkan fungsi penambahan mudah tambah, digunakan untuk mengembalikan hasil tambah dua integer. Di bawah, kami akan menunjukkan interaksi antara bahasa Golang dan C dan cara Golang memanggil DLL melalui langkah berikut:

1 Tentukan fungsi bahasa C dalam Go

Tentukan fungsi bahasa C dalam Go Fungsi. agak mudah, cuma ikut langkah berikut:

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)
}

Dalam contoh ini, kami memuatkan pustaka bahasa C dengan mengimport "C" dan mentakrifkan fungsi Tambah, yang akan didedahkan Untuk digunakan oleh kod Golang. Ambil perhatian bahawa dalam fungsi Tambah, kita perlu memanggil fungsi tambah dalam perpustakaan pautan dinamik bahasa C melalui fungsi tambah dalam C, dan kita juga perlu menukar jenis int kepada jenis C.int.

2. Kompil

Selepas melengkapkan penulisan kod, kita perlu menggunakan arahan berikut untuk menyusun dalam Golang:

go build -o main.exe

3 > untuk menyelesaikan penyusunan Akhirnya, kami menjalankan program kami melalui arahan berikut:

.main.exe

Kami dapat melihat output program:

3 + 4 = 7

Pada ketika ini, kami telah menyelesaikan proses Golang memanggil DLL.

4. Ringkasan

Artikel ini memperkenalkan interaksi antara fail Golang dan DLL. Pelaksanaan khusus diselesaikan melalui cgo. Dalam amalan, kita boleh melengkapkan interaksi antara Golang dan DLL dengan mentakrifkan fungsi bahasa C dalam Golang dan menggunakan fungsi dalam perpustakaan pautan dinamik bahasa C. Malah, Golang juga boleh memanggil antara muka DLL melalui pakej syscall, tetapi dalam beberapa kes yang rumit, ia mungkin lebih mudah untuk menggunakan Cgo. Oleh itu, Golang memanggil DLL adalah titik pengetahuan yang penting Dalam pembangunan sebenar, ia perlu dikuasai untuk membangunkan program Golang dengan lebih cekap.

Atas ialah kandungan terperinci Bagaimana untuk memanggil dll dalam golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn