我正在尝试使用cgo从内部调用简单的c函数
文件如下:
goFile.go:
package main
//#include "cFile.h"
import "C"
func main() {
C.printInC()
}
cFile.h:
void printInC();
cFile.c:
#include "cFile.h"
#include <stdio.h>
void printInC(){
printf("Test");
}
运行
go build goFile.go
会引发以下异常:C:/TDM-GCC-64/bin/../lib/gcc/x86_64-w64-mingw32/9.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: $WORK\b001\_x002.o: in function `_cgo_f9774dcf54b4_Cfunc_printInC':
/tmp/go-build/cgo-gcc-prolog:49: undefined reference to `printInC'
collect2.exe: error: ld returned 1 exit status
我不太确定为什么这行不通,我看过cgo的多个教程,它们以完全相同的方式实现调用c函数,没有问题。
最佳答案
我发现了问题。
当运行go build goFile.go
时,go工具显然只能构建goFile.go,当我在整个目录上运行go build时,一切正常。
关于c - 从go代码调用时对c函数的 undefined reference ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/61385874/