Maison > développement back-end > Golang > le corps du texte

Comment compiler correctement un projet Golang à l'aide d'un package contenant du code C

WBOY
Libérer: 2024-02-06 10:24:03
avant
958 Les gens l'ont consulté

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

Contenu de la question

J'ai commencé à écrire un projet en Golang et j'ai immédiatement rencontré un problème. J'ai besoin de me connecter au matériel à partir de mon code et j'ai un pilote et un wrapper Golang fournis par le fournisseur. La description de la connexion wrapper indique que le code doit être placé dans le répertoire src du projet (je n'utilise pas un tel répertoire, mais je mets les fichiers par nom de package dans le répertoire ./internal/fptr10 et dans mon main. allez, il a été importé avec succès). J'ai vu la méthode dans ce package dans l'EDI GoLand, mais lorsque j'essaie de compiler le projet (j'appelle la première fonction censée créer l'instance de pilote, appelée New()) - j'obtiens l'erreur : fptr10. New() n'est pas défini. Il y a deux fichiers d'en-tête écrits en C dans le répertoire wrapper et je sais qu'il y a quelque chose qui ne va pas avec eux mais je ne comprends pas comment le compiler correctement.

L'ensemble du projet, ainsi que la bibliothèque elle-même, peuvent être trouvés sur https://github.com/Natrix31/KKTWatcher P.S. : je travaille sous Windows

J'ai essayé de compiler le projet depuis l'EDI et depuis la ligne de commande en utilisant go build et go install Mais le résultat est le même. Le programme ne parvient pas à compiler et donne l'erreur : New() non défini


Réponse correcte


Dans ce cas, vous pouvez mettre le code c dans le module go, assurez-vous simplement d'avoir un compilateur c installé sur votre plate-forme et utilisez les commentaires de préface pour citations.

main.go

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

func main() {
    fmt.println(c.add(1, 2))
}
Copier après la connexion

calc.c

#include "calc.h"

int add(int a, int b) {
    return a + b;
}
Copier après la connexion

calc.h

int add(int a, int b);
Copier après la connexion

go a cgo activé par défaut, alors construisez-le :

go build -o main.out .
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:stackoverflow.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!