Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Boleh Panggil Kod Go daripada Projek C Saya?

Bagaimanakah Saya Boleh Panggil Kod Go daripada Projek C Saya?

Susan Sarandon
Susan Sarandonasal
2024-12-15 22:03:13921semak imbas

How Can I Call Go Code from My C Projects?

Merapatkan Jurang: Kod Panggilan Go daripada Projek C

Dalam bidang kejuruteraan perisian, integrasi merentas bahasa memainkan peranan penting dalam memperluaskan keupayaan projek sedia ada. Dengan kemunculan Go 1.5, prospek menggunakan kod Go daripada program C dengan lancar telah menjadi kenyataan. Artikel ini menyelidiki aspek praktikal untuk mencapai penyepaduan ini, menerangkan nuansa dan amalan terbaik yang terlibat.

Membina Arkib C-Callable Go

Untuk memberikan kod Go boleh diakses oleh program C, bendera -buildmode=c-archive mesti digunakan semasa penyusunan. Bendera ini menjana pustaka statik boleh panggil C (.a) dan fail pengepala yang berkaitan (.h). Dalam kod Go, fungsi tertentu mesti ditanda untuk eksport menggunakan //komen eksport. Selain itu, pakej yang mengandungi fungsi ini hendaklah dinamakan utama dan mentakrifkan fungsi utama yang kosong.

Sebagai contoh, pertimbangkan fail foo.go berikut:

package main

import (
    "C"
    "fmt"
)

//export PrintInt
func PrintInt(x int) {
    fmt.Println(x)
}

func main() {}

Mengkompil untuk C Keserasian

Untuk membina arkib dan pengepala boleh panggil C, laksanakan perkara berikut arahan:

go build -buildmode=c-archive foo.go

Menggunakan Fungsi Go dalam C

Fail pengepala yang dijana menyediakan pengisytiharan yang diperlukan untuk mengakses fungsi Go yang dieksport dalam C. Dalam program C foo yang disertakan .c, fungsi PrintInt boleh digunakan sebagai berikut:

#include "foo.h"

int main(int argc, char **argv) {
    PrintInt(42);
    return 0;
}

Pemautan dan Pelaksanaan

Untuk mencipta kod Go dan C pemautan boleh laku terakhir, susun atur cara C dengan arahan berikut:

gcc -pthread foo.c foo.a -o foo

Kesimpulan

Dengan memanfaatkan keupayaan yang diperkenalkan dalam Go 1.5, pembangun boleh menyepadukan kuasa dan kemudahan Go dengan lancar ke dalam projek C sedia ada. Proses ini melibatkan penandaan fungsi Go untuk eksport, menyusunnya ke dalam arkib serasi C dan menggunakan fungsi ini dalam kod C menggunakan fail pengepala yang dijana. Dengan pengetahuan ini, pengaturcara boleh memanfaatkan kekuatan gabungan kedua-dua bahasa, membuka kunci kemungkinan baharu dan mempertingkatkan kefungsian sistem perisian mereka.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Panggil Kod Go daripada Projek C Saya?. 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