草庐IT

CGO_OFILES

全部标签

garbage-collection - 有没有一种安全的方法可以使用 CGo 从 C 代码中保留对 Go 变量的引用?

当使用CGo将C代码与Go交互时,如果我在C端保留对Go变量的引用,我是否会冒着该对象被垃圾收集器释放的风险,或者GC是否会在C端管理的变量?为了说明我的要求,请考虑以下示例程序:去代码:packagemain/*typedefstruct_FooFoo;Foo*foo_new(void);voidfoo_send(Foo*foo,intx);intfoo_recv(Foo*foo);*/import"C"//exportmakeChannelfuncmakeChannel()chanint{returnmake(chanint,1)}//exportsendIntfuncsendIn

garbage-collection - 有没有一种安全的方法可以使用 CGo 从 C 代码中保留对 Go 变量的引用?

当使用CGo将C代码与Go交互时,如果我在C端保留对Go变量的引用,我是否会冒着该对象被垃圾收集器释放的风险,或者GC是否会在C端管理的变量?为了说明我的要求,请考虑以下示例程序:去代码:packagemain/*typedefstruct_FooFoo;Foo*foo_new(void);voidfoo_send(Foo*foo,intx);intfoo_recv(Foo*foo);*/import"C"//exportmakeChannelfuncmakeChannel()chanint{returnmake(chanint,1)}//exportsendIntfuncsendIn

戈朗 : How to link C objects using CGO_OFILES?

因此,我正在拔头发。我想要做的就是将一个.o(C目标文件)与一个Go包链接起来,这样Go包就可以调用C函数。似乎没有关于cgo的CGO_OFILES参数的任何文档,在网上搜索后似乎是我需要的。我试过将它放在Go文件的顶部:/*#cgoCGO_OFILES:doc-capi-tesseract.o#include#include"doc-capi-tesseract.h"*/import"C"但这给了我错误invalid#cgoverb:#cgoCGO_OFILES:doc-capi-tesseract.o。然后我在某处读到可以使用makefile,所以我制作了这个可能不正确的makef

戈朗 : How to link C objects using CGO_OFILES?

因此,我正在拔头发。我想要做的就是将一个.o(C目标文件)与一个Go包链接起来,这样Go包就可以调用C函数。似乎没有关于cgo的CGO_OFILES参数的任何文档,在网上搜索后似乎是我需要的。我试过将它放在Go文件的顶部:/*#cgoCGO_OFILES:doc-capi-tesseract.o#include#include"doc-capi-tesseract.h"*/import"C"但这给了我错误invalid#cgoverb:#cgoCGO_OFILES:doc-capi-tesseract.o。然后我在某处读到可以使用makefile,所以我制作了这个可能不正确的makef

linker - go + cgo 和链接

我想用下面的c作为Go的cgo:#includemain(){XScreenSaverInfo*info=XScreenSaverAllocInfo();Display*display=XOpenDisplay(0);XScreenSaverQueryInfo(display,DefaultRootWindow(display),info);printf("%ums\n",info->idle);}构建:gcc-oidleprintXIdleTime.c-lX11-lXss我为Go的cgo重写了代码:packagetools//#cgopkg-config:x11//#includei

linker - go + cgo 和链接

我想用下面的c作为Go的cgo:#includemain(){XScreenSaverInfo*info=XScreenSaverAllocInfo();Display*display=XOpenDisplay(0);XScreenSaverQueryInfo(display,DefaultRootWindow(display),info);printf("%ums\n",info->idle);}构建:gcc-oidleprintXIdleTime.c-lX11-lXss我为Go的cgo重写了代码:packagetools//#cgopkg-config:x11//#includei

windows - 戈朗 : how can I call win32 API without cgo?

我正在尝试从secur32.dll中调用GetUserNameEx,如下所示:dll,err:=syscall.LoadDLL("secur32.dll")iferr!=nil{log.Fatal(err)}deferdll.Release()GetUserNameEx,err:=dll.FindProc("GetUserNameExW")iferr!=nil{log.Fatal(err)}arr:=make([]uint8,256)varsizeuintGetUserNameEx.Call(3,uintptr(unsafe.Pointer(&arr[0])),uintptr(unsa

windows - 戈朗 : how can I call win32 API without cgo?

我正在尝试从secur32.dll中调用GetUserNameEx,如下所示:dll,err:=syscall.LoadDLL("secur32.dll")iferr!=nil{log.Fatal(err)}deferdll.Release()GetUserNameEx,err:=dll.FindProc("GetUserNameExW")iferr!=nil{log.Fatal(err)}arr:=make([]uint8,256)varsizeuintGetUserNameEx.Call(3,uintptr(unsafe.Pointer(&arr[0])),uintptr(unsa

go - 如何从谷歌导入和使用 CGO Brotli 实现?

我正在尝试从google导入和使用cbrotli实现如下:import("fmt""io/ioutil"cbrotli"github.com/google/brotli/go/cbrotli")但是我在尝试运行程序时遇到以下错误:learn-go[master●●]%CGO_CFLAGS="-I/dev/projects/go/learn-go/src/brotli/c/include/brotli"goruncmd/compress/main.go#github.com/google/brotli/go/cbrotlisrc/github.com/google/brotli/go/c

go - 如何从谷歌导入和使用 CGO Brotli 实现?

我正在尝试从google导入和使用cbrotli实现如下:import("fmt""io/ioutil"cbrotli"github.com/google/brotli/go/cbrotli")但是我在尝试运行程序时遇到以下错误:learn-go[master●●]%CGO_CFLAGS="-I/dev/projects/go/learn-go/src/brotli/c/include/brotli"goruncmd/compress/main.go#github.com/google/brotli/go/cbrotlisrc/github.com/google/brotli/go/c