ich nur eine sehr einfache Demo schreiben zu testen, die gemeinsam benutzte Bibliothek mit CGO (golang) laden .the Code wie folgt:CGO (golang): Fehler: underfined Verweis auf 'Hallo'
xxx.h
#pragma once
void myprint(const char *str);
xxx.c
#include "xxx.h"
#include <stdio.h>
void myprint(const char *str) {
printf("%s\n",str);
}
build Shared Library:
gcc -fPIC -shared xxx.c -o libxxx.so
ok, von hier ist alles in Ordnung.
jetzt, verwenden Sie die CGO die libxxx.so laden und verwenden Sie die myprint Funktion:
package main
/*
#include <stdio.h>
#cgo linux CFLAGS: -I../../include
#cgo linux LDFLAGS: -L../../lib/linux -lxxx
#include "xxx.h"
*/
import "C"
funct main() {
C.myprint(C.CString("xxx"))
}
dann bauen die Go-Demo:
go build test.go
wie mein Titel zeigen:
error: undefined reference to 'myprint'
ich stelle sicher, dass der pfad von lib/head datei richtig ist, wer kann mir helfen, th zu finden Der Grund? Danke.
Ich benutze absolute Pfade in meiner Quelle oder verwenden Sie die '$ {SRCDIR}' Variable in der '# cgo' die Info zeigen:' malformed #cgo argument' – FreeApe
@ FreeApe: "missformed #cgo argument" ist eine fehlerhafte Zeile, wie es heißt, oder du benutzt eine sehr alte Version von Go. Bitte aktualisiere das zuerst und füge ein aktuelles Beispiel in deine Frage ein, falls es noch ein Problem gibt. – JimB
thx, dass du gesagt hast, ist richtig. [https://github.com/golang/go/issues/11868](https://github.com/golang/go/issues/11868), und ich versuche, die neueste Version zu testen, es funktioniert. – FreeApe