Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah Saya Boleh Mengintegrasikan Kod Go ke dalam Projek C Sedia Ada Saya?

Bagaimanakah Saya Boleh Mengintegrasikan Kod Go ke dalam Projek C Sedia Ada Saya?

DDD
Lepaskan: 2024-12-17 18:48:13
asal
414 orang telah melayarinya

How Can I Integrate Go Code into My Existing C Project?

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:

  1. Fungsi Tanda untuk Eksport:

    • Fungsi yang dimaksudkan untuk dipanggil daripada C mesti ditandakan dengan //export komen dalam kod Go.
    • Pastikan pakej Go yang mengandungi fungsi ini dinamakan utama.
    • Sertakan fungsi bernama utama, walaupun ia kosong.
    • Import pakej C.
  2. Kompilasi Arkib Go:

    • Kompilkan kod Go ke dalam Pustaka statik boleh panggil C menggunakan arahan berikut:

      go build -buildmode=c-archive foo.go
      Salin selepas log masuk
      Salin selepas log masuk
    • Ini akan menjana arkib dan fail pengepala (cth., foo.a dan foo.h).
  3. Pautan C Program:

    • Dalam program C, masukkan fail pengepala yang dijana:

      #include "foo.h"
      Salin selepas log masuk
    • Pautan terhadap arkib Go menggunakan -pilihan pthread:

      gcc -pthread foo.c foo.a -o foo
      Salin selepas log masuk
      Salin selepas log masuk
    • Ini akan membolehkan program C memanggil Go yang dieksport fungsi.

Contoh:

Pertimbangkan kod Go berikut (foo.go):

package main

import "C"
import "fmt"

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

func main() {}
Salin selepas log masuk

Kompilasikannya ke dalam arkib:

go build -buildmode=c-archive foo.go
Salin selepas log masuk
Salin selepas log masuk

Kemudian, dalam program C (foo.c):

#include "foo.h"

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

Kompilasikannya:

gcc -pthread foo.c foo.a -o foo
Salin selepas log masuk
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan