繁体   English   中英

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

[英]undefined reference to c function when calling from go code

我正在尝试使用 cgo 从 go 中调用一个简单的 c function

文件如下:

goFile.go:

package main

//#include "cFile.h"
import "C"

func main() {
    C.printInC()
}

c文件.h:

void printInC();

c文件.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 时,一切正常。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM