从 go 代码调用时对 c 函数的未定义引用

undefined reference to c function when calling from go code

我正在尝试使用 cgo 从 go 中调用一个简单的 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 函数而没有问题。

我找到问题了。

当 运行ning go build goFile.go go 工具显然只构建 goFile.go 时,当我 运行 在整个目录上构建时一切正常..