Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara menyusun projek Golang dengan betul menggunakan pakej yang mengandungi kod C

Cara menyusun projek Golang dengan betul menggunakan pakej yang mengandungi kod C

WBOY
WBOYke hadapan
2024-02-06 10:24:03979semak imbas

如何使用包含 C 代码的包正确编译 Golang 项目

Kandungan soalan

Saya mula menulis projek di Golang dan serta-merta menghadapi masalah. Saya perlu menyambung ke perkakasan daripada kod saya dan saya mempunyai pemandu dan vendor yang menyediakan pembalut Golang. Penerangan sambungan pembungkus mengatakan bahawa kod itu perlu diletakkan dalam direktori src projek (saya tidak menggunakan direktori sedemikian, tetapi saya meletakkan fail mengikut nama pakej dalam direktori ./internal/fptr10 dan dalam direktori utama saya. go ia telah berjaya diimport). Saya melihat kaedah dalam pakej ini dalam IDE GoLand, tetapi apabila saya cuba menyusun projek (saya memanggil fungsi pertama yang harus mencipta contoh pemacu, dipanggil New()) - saya mendapat ralat: fptr10. New() tidak ditakrifkan. Terdapat dua fail pengepala yang ditulis dalam C dalam direktori pembalut dan saya tahu ada sesuatu yang tidak kena dengannya tetapi saya tidak faham cara menyusunnya dengan betul.

Keseluruhan projek, serta perpustakaan itu sendiri, boleh didapati di https://github.com/Natrix31/KKTWatcher P.S.: Saya bekerja di bawah Windows

Saya cuba menyusun projek dari IDE dan dari baris arahan menggunakan go build dan go install Tetapi hasilnya adalah sama. Program ini gagal untuk menyusun dan memberikan ralat: New() undefined


Jawapan betul


Untuk kes ini, anda boleh meletakkan kod c ke dalam modul go, cuma pastikan anda mempunyai pengkompil c dipasang di platform anda dan Gunakan ulasan prakata untuk petikan.

main.go

/*
    #include <stdio.h>
    #include <math.h>
    #include "calc.h"
*/
import "c"

func main() {
    fmt.println(c.add(1, 2))
}

calc.c

#include "calc.h"

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

calc.h

int add(int a, int b);

go telah mendayakan cgo secara lalai, jadi bina sahaja:

go build -o main.out .

Atas ialah kandungan terperinci Cara menyusun projek Golang dengan betul menggunakan pakej yang mengandungi kod C. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam