草庐IT

CGO_ENABLED

全部标签

android-ndk - 是否可以使用带有 cgo 和/或 SWIG 或类似工具的 NDK 在 Go 中构建 Android 游戏?

完全可以使用Go来构建Android游戏吗?我并不拘泥于主题行中提到的技术。我知道somepeople已经用Go构建了一些Android程序,但它们可能是headless的。 最佳答案 不,现在不可能。Go和C程序可以通过cgo进行互操作。但在那种情况下,Go程序必须在将控制权传递给程序的基于C的部分之前启动并初始化其运行时。在Android中使用NDK时,Dalvik虚拟机会通过dlopen调用您的C代码。因此Go运行时将没有机会初始化自己。 关于android-ndk-是否可以使用带

go - 不能在共享库中隐式包含运行时/cgo

关注我的earlierquestion,现在我在尝试执行此article中的所有相同步骤时遇到此错误,因为我已经从Go1.6.1升级到Go1.7.1(我无法返回到Go1.6.1,因为链接器在尝试编译一些共享库时崩溃)。我做了什么:在~/.go/go中安装了go(稍后称为GOROOT)。编译libstd.so:GOROOT=~/.go/goGOPATH=~/testsgoinstall-buildmode=shared-linksharedstd编译的calc库:GOROOT=~/.go/goGOPATH=~/testsgoinstall-a-x-buildmode=shared-lin

go - 使用 cgo 将函数指针传递给 C 代码

从Gov1.6开始,cgo改变了将指针传递给C代码的规则golang/go#12416.从wiki中的C代码调用动态Go回调的示例不再有效。packagemainimport("fmt""unsafe")/*externvoidgo_callback_int(void*foo,intp1);//normallyyouwillhavetodefinefunctionorvariables//inanotherseparateCfiletoavoidthemultipledefinition//errors,however,using"staticinline"isaniceworkaro

c++ - 我可以在cgo中使用c++吗?

是否可以在cgo中混入一些C++代码?我试过这个:packagemain/*#includeextern"C"voidtest(constchar*str){std::cout但是我得到了这些错误:error:'char*CString(_GoString_)'cannotappearinaconstant-experror:'voidtest(constchar*)'cannotappearinaconstant-expreserror:invalidconversionfrom'char*(*)(_GoString_)'to'longlongint'[-fpermissive]er

Go/CGo - 如何使用作为指针传递的 C 数组

我将其作为问题/答案发布,因为我花了一些时间才解决这个问题,而且我不介意对我的解决方案提供一些反馈。在Go/CGo中,如何处理作为指针传递的C数组?例如,对于这个C结构:struct_GNetSnmpVarBind{guint32*oid;/*nameofthevariable*/gsizeoid_len;/*lengthofthename*/...andotherfields};我想将oid字段转换为Go字符串,如何使用guint32*指针? 最佳答案 您可以使用atipIsawinthegowiki将C数组转换为Goslice未

go - CGO,如何将NULL参数传递给C函数

有时,CAPI可能需要NULL指针。这在CGO中可能吗?例如,我想在Go语言程序中向strcmp()传递一个null参数:packagestrutil/*#include#include*/import("C""unsafe")funcStrCmp(a,bstring)int{pca:=C.CString(a)deferC.free(pca)pcb:=C.CString(b)deferC.free(pcb)ret:=C.strcmp(pca,pcb)returnint(ret)}如果我将pca设置为nil,则会出现此错误:Exception0xc00000050x00x00x76828

go - 无法使用 cgo CFLAGS

我已经在/home/arafat/go/src/github.com/tensorflow/tensorflow/tensorflow/contrib/go中手动克隆了tensorflow(我正在研究的库)的go目录你可以看看here.我已经对lib.go进行了更改作为//#cgoLDFLAGS:-ltensorflow//#cgoCFLAGS:-I/home/arafat/go/src/github.com/tensorflow/tensorflow//#cgoCXXFLAGS:-I/home/arafat/go/src/github.com/tensorflow/tensorflo

go build 在编译 cgo 包时找不到我的 C 标准库

我正在尝试在树莓派上编译一个go项目。项目有5个文件,两个小.c文件及其对应物.h(其中一个文件是我的代码——它调用另一个,它是一个base64库)和一个.go调用我的文件.c代码使用cgo.当我只用gcc编译我的C代码(包括它的调用和所有内容)时单独在树莓派上运行良好,无需任何配置。当我在x86上编译整个go项目时带有gobuild的LinuxUbuntu机器,它也做得很好。但是当我尝试用gobuild编译go项目时在树莓派中它没有得到我的C库:fiatjaf@raspberrypi~/g/s/b/f/project>gobuild-xWORK=/tmp/go-build702187

go - 覆盖外部包的 cgo 编译器和链接器标志?

假设我想使用一些很棒的go包。我可以通过以下方式包含它:import"github.com/really-awesome/project/foobar"在该项目的foobar.go文件中,它定义了一些cgo指令,例如:#cgowindowsCFLAGS:-IC:/some-path/Include#cgowindowsLDFLAGS:-LC:/some-path/Lib-lfoobar但是如果我在其他地方安装了foobarC依赖项,我真的需要这些行来说明:#cgowindowsCFLAGS:-IC:/different-path/Include#cgowindowsLDFLAGS:-L

go 1.5 在 OS X 上使用 cgo 交叉编译到 linux 和 windows

我在编译git2go时遇到问题升级go1.4.2到go1.5后,OSX上的库到linuxamd64。我认为这是关于在go1.5中交叉编译任何使用C代码的go应用程序。使用CGO_ENABLED=1,我得到:$CGO_ENABLED=1GOOS=linuxGOARCH=amd64./script/with-static.shgoinstall./...#runtime/cgold:unknownoption:--build-id=noneclang:error:linkercommandfailedwithexitcode1(use-vtoseeinvocation)使用-compile