草庐IT

cgo_unix

全部标签

c++ - cgo : iostream:38:28: fatal error: bits/c++config. h 编译错误:没有那个文件或目录

我试图从thispage中的官方cudanvrtc指南执行saxpy示例它可以在终端上使用g++编译器并按照构建说明正常工作:g++saxpy.cpp-osaxpy-I$CUDA_PATH/include-L$CUDA_PATH/lib64-lnvrtc-lcuda-Wl,-rpath,$CUDA_PATH/lib64现在我正在尝试使用cgo工具以go语言执行它。我在“my_function”中命名了main函数,并试图用C.my_function调用它。这是我的cgo指令://PATH#cgoLDFLAGS:-L/usr/local/cuda-7.0/lib64-L/usr/loca

unix - 从命令行嵌套 JSON 运行 Go

我可以想到如何使它正常工作的变通方法,但是我很想知道是否有针对这个特定问题的解决方案。我有一个需要json字符串参数的go程序:gorunmain.go"{\"field\":\"value\"}"到目前为止没有问题。但是,如果其中一个json值是另一个json字符串,我是否可以从命令行运行?gorunmain.go"{\"json-string\":\"{\"nestedfield\":\"nestedvalue\"}\"}"添加转义字符似乎错误地匹配了开始和结束引号。我是在误解这是如何完成的,还是根本不可能(这是我要反对的一面)?重申一下,这是一个激起我好奇心的问题-我知道有其他方

go - 将 cgo 数组转换为 slice

目前我这样做是为了将CGOdouble组转换为float64slice:doubleSlc:=[6]C.double{}//FilldoubleSlcfloatSlc:=[]float64{float64(doubleSlc[0]),float64(doubleSlc[1]),float64(doubleSlc[2]),float64(doubleSlc[3]),float64(doubleSlc[4]),float64(doubleSlc[5])}做同样的事情有没有更简单的方法?我想这也可以看作是在Go中不同类型的slice/数组之间进行转换的通用方法。

go - 用cgo编译出错

因此,我试图在不忙等待的情况下从stdin读取,忽略EOF,因为在我的案例中,客户端会来来去去。在C中,我会使用简单的select()或poll(),但我正在尝试学习Go,但我对缺少select()或poll()感到非常沮丧。我找不到在Go中使用select和channels的好方法,因为Read()将在EOF上立即返回,而我又回到了忙碌的等待状态。syscall.Select()似乎是最好的方法,但Go并没有费心去实现FD_SET!感叹所以,我正在尝试使用cgo。packagemain/*#include#includevoid_FD_SET(intsysfd,void*set){F

go - 将时间字段编码为 Unix 时间

我想将我的time.Time字段编码为数字Unix时间,我不想为每个结构实现自定义MarshalJSON函数,因为我有很多很多结构。所以,我尝试定义一个类型别名:类型时间戳time.Time并像这样在其上实现MarshalJSON:func(tTimestamp)MarshalJSON()([]byte,error){return[]byte(strconv.FormatInt(t.Unix(),10)),nil}但这给了我一个t.Unixundefined(typeTimestamphasnofieldormethodUnix),这对我来说没有意义。Timestamp不应该“继承”(

go - 如何在cgo中初始化空的C.CString

您认为在CGO中初始化长度为x的C.CString的最佳方法是什么?背景:我需要一个适当大小的char*作为C函数参数,但我想可以改进以下代码://length=6varbuffer[6]bytename:=C.CString(string(buffer[:6]))deferC.free(unsafe.Pointer(name))或//length=6name:=C.CString("")deferC.free(unsafe.Pointer(name)) 最佳答案 如果您不需要转换字符串,只需malloc您需要的大小即可:s:=C.

CGO 我正在传递一个 C 结构,它带有一个指向 go 函数的值的指针,

我很疑惑下面的场景是否需要清理内存?我有一个C函数,它创建一个C结构并将其传递给Go函数。C结构包含一个值数组(使用指针算法)。Go函数填充此数组并返回。在调用C函数中,我将值从C结构中复制出来并且不存储它们。因为这是在Go中创建的,所以垃圾会被收集吗?/*Ccode*/intgo_func(c_struct*s);structc_struct{val*values;size_t*values_cnt;};voidexample_call(){structc_structs;go_func(&s)copy_values(s)}/*gocode*/funcgo_func(c*C.c_st

无法访问cgo中的c变量

我正在尝试访问cgo中的c结构,但是请执行此操作couldnotdeterminekindofnameforC.utmpxutmpx是一个C结构体这是执行代码:/*#include#include#include#include#include*/import"C"typerecordC.utmpxfd,err:=os.Open(C._PATH_UTMPX)//thisworksfd,err:=os.Open(C.UTMPX_FILE)//error在utmpx.h文件中,有#define_PATH_UTMPX"/var/run/utmpx"#defineUTMPX_FILE_PATH

go - 什么是 cgo 类型,相当于指向结构的 const 指针?

我在C中定义了一个外部函数://externvoidgoCallback(conststructlibvlc_event_t*,void*);在go中定义://exportgoCallbackfuncgoCallback(eventunsafe.Pointer,userDataunsafe.Pointer){log.Fatal("TODOgoCallback")}编译代码时出现类型冲突错误#github.com/tarrsalah/libvlc-goInfileincludedfrom$WORK/github.com/tarrsalah/libvlc-go/_obj/_cgo_expo

c - "Undefined symbols for architecture x86_64:"用于在 macOS Sierra 上使用 cgo 的库

我正在尝试使用图书馆,https://github.com/go-steem/rpc,它使用了一些引用库的C代码。C库可以在这里找到,https://github.com/bitcoin-core/secp256k1我按照步骤安装了它$./autogen.sh$./configure$make$./tests$sudomakeinstall#optional并有这个输出;$sudomakeinstallPassword:CCsrc/libsecp256k1_la-secp256k1.loCCLDlibsecp256k1.laCCsrc/tests-tests.oCCLDtestsCCs