我正在尝试使用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/

10-16 08:33