Я просто пишу очень простую демонстрацию для проверки загрузки общей библиотеки с помощью кода cgo(golang).the следующим образом:
ххх.ч
#pragma once
void myprint(const char *str);
ххх.с
#include "xxx.h"
#include <stdio.h>
void myprint(const char *str) {
printf("%s\n",str);
}
собрать общую библиотеку:
gcc -fPIC -shared xxx.c -o libxxx.so
хорошо, отсюда все в порядке.
теперь используйте cgo, загрузите libxxx.so и используйте функцию myprint:
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"))
}
затем создайте демонстрацию go:
go build test.go
как показывает мой заголовок:
error: undefined reference to 'myprint'
Я удостоверился, что путь к файлу lib/head указан правильно. Кто может помочь мне найти причину? спасибо.