从 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 时,当我 运行 在整个目录上构建时一切正常..
我正在尝试使用 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 时,当我 运行 在整个目录上构建时一切正常..