golang:cgo extern无法正常工作
发布时间:2020-12-16 09:22:02 所属栏目:大数据 来源:网络整理
导读:我试图使用以下示例运行gogo for golang(在 go-wiki - Global Functions给出): foo.go文件: package gocallbackimport "fmt"/*#include stdio.hextern void ACFunction();*/import "C"//export AGoFunctionfunc AGoFunction() { fmt.Println("AGoFunction(
我试图使用以下示例运行gogo for golang(在
go-wiki -> Global Functions给出):
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未定义?还是我错过了什么? 去版本: 解决方法
根据问题评论,似乎你试图用go run foo.go构建和运行程序.
这运行失败:无法运行非主程序包错误,但将程序包名称转换为main并添加主函数确实会重现问题中的错误.这似乎是因为它试图只编译foo.go文件而不是编译伴随的foo.c文件. 如果您将文件放在$GOPATH / src下的目录中并使用go build packagename来构建程序,它应该成功构建包中的所有源文件. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |