Mengintegrasikan Kod Go ke dalam Projek C Sedia Ada
Soalan:
Adakah mungkin untuk memanggil kod Go daripada program C, dan jika ya, bagaimana ini boleh berlaku tercapai?
Jawapan:
Ya, Go 1.5 memperkenalkan mod -buildmode=c-archive, yang membolehkan kod Go disusun ke dalam arkib yang sesuai untuk dipautkan ke program C. Untuk menyepadukan kod Go ke dalam projek C sedia ada:
Fungsi Tanda untuk Eksport:
Kompilasi Arkib Go:
Kompilkan kod Go ke dalam Pustaka statik boleh panggil C menggunakan arahan berikut:
go build -buildmode=c-archive foo.go
Pautan C Program:
Dalam program C, masukkan fail pengepala yang dijana:
#include "foo.h"
Pautan terhadap arkib Go menggunakan -pilihan pthread:
gcc -pthread foo.c foo.a -o foo
Contoh:
Pertimbangkan kod Go berikut (foo.go):
package main import "C" import "fmt" //export PrintInt func PrintInt(x int) { fmt.Println(x) } func main() {}
Kompilasikannya ke dalam arkib:
go build -buildmode=c-archive foo.go
Kemudian, dalam program C (foo.c):
#include "foo.h" int main(int argc, char **argv) { PrintInt(42); return 0; }
Kompilasikannya:
gcc -pthread foo.c foo.a -o foo
Menjalankan foo akan mencetak "42".
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengintegrasikan Kod Go ke dalam Projek C Sedia Ada Saya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!