
foo.go文件:
package gocallbackimport "fmt"/*#include <stdio.h>extern voID ACFunction();*/import "C"//export AGoFunctionfunc 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未定义?还是我错过了什么?
去版本:
去版本go1.1.2 linux / 386
这运行失败:无法运行非主程序包错误,但将程序包名称转换为main并添加主函数确实会重现问题中的错误.这似乎是因为它试图只编译foo.go文件而不是编译伴随的foo.c文件.
如果您将文件放在$GOPATH / src下的目录中并使用go build packagename来构建程序,它应该成功构建包中的所有源文件.
总结以上是内存溢出为你收集整理的golang:cgo extern无法正常工作全部内容,希望文章能够帮你解决golang:cgo extern无法正常工作所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)