我正在尝试使用以下示例(在go-wiki -> Global Functions中提供)运行golang的cgo:
foo.go
文件:
package gocallback
import "fmt"
/*
#include <stdio.h>
extern void ACFunction();
*/
import "C"
//export AGoFunction
func AGoFunction() {
fmt.Println("AGoFunction()")
}
func Example() {
C.ACFunction()
}
foo.c
文件:
#include "_cgo_export.h"
void ACFunction() {
printf("ACFunction()\n");
AGoFunction();
}
在运行此示例时,我遇到了以下错误:
# command-line-arguments
/tmp/go-build770916112/command-line-arguments/_obj/foo.cgo2.o: In function `_cgo_3234419c4c2a_Cfunc_ACFunction':
./foo.go:36: undefined reference to `ACFunction'
collect2: ld returned 1 exit status
我无法追踪到这个问题的原因。为什么ACFunction
是undefined
?还是我漏掉了什么?
go version
:
go version go1.1.2 linux/386
foo.go
文件并没有36行,因此您删除的某些代码中是否存在错误呢? - James Henstridgego run foo.go
。是否需要特定的gcc版本或32位/64位机器或其他什么东西? - Jaynti Kananigo build packagename
命令。我在 Linux/amd64 平台上测试了 1.1.2 和 1.2 版本。 - James Henstridgego run
不起作用,而go build packagename
则按预期工作。感谢您的指引。 - Jaynti Kanani