cgo相关内容
以下是我的代码: package main import ( kusb "github.com/karalabe/usb" tusb "github.com/trezor/trezord-go/usb" ) func main() { kusb.Enumerate(0, 0) tusb.InitHIDAPI(nil) } 当我编译(我正在使用go mo
..
因此,该组中有很多内容表明您可以在 go 中执行此操作(尽管 cgo 文档中没有): 包桥导入“fmt"//#cgo CFLAGS: -I/Users/doug/projects/c/go-bridge/include//#cgo LDFLAGS:/Users/doug/projects/c/go-bridge/build/libgb.a//#include 导入“C"功能运行(){fmt.Pr
..
在 Golang wiki 中的“Turning C arrays into Go slices"下,有是一段代码,用于演示如何创建由 C 数组支持的 Go 切片. 导入“C"导入“不安全"...var theCArray *C.YourType = C.getTheArray()长度 := C.getTheArrayLength()切片 := (*[1
..
我使用的是 Windows 10.当我尝试构建 Chaincode它报了这个错误 # github.com/hyperledger/fabric/vendor/github.com/miekg/pkcs11exec: "gcc": 在 %PATH% 中找不到可执行文件 我的链码导入: import (“fmt"“strconv"“github.com/hyperledger/fabric/c
..
我正在尝试转换 这个 c++. 简而言之,这就是 c 代码在做什么: static const char *pSharedMem = NULL;int sessionInfoOffset;返回 pSharedMem + pHeader->sessionInfoOffset; 这是我的(伪)代码: var pSharedMem unsafe.PointersessionInfoLen C
..
我正在尝试在Go代码中包含C ++代码,但无法识别. 我首先想到它将其视为C代码并尝试(并失败)这样的编译方式,但实际上删除包含行可为我提供c ++错误疑难解答,例如错误:"cout"不是"std"的成员该代码可以使用g ++正确编译. 我尝试添加-lstdc ++ LDLFLAG,并在CXXFLAG中添加到lib的路径,但这并没有改变. 我做了其他一些测试(都失败了),但这是最
..
程序包主要/*int add(int a,int b){返回a + b;}*/导入"C"导入"fmt"func main(){}func Test1(){fmt.Println(C.add(1,3))}//导出Test2func Test2(){} 编译程序: dingrui @ dingrui-PC:〜/Projects/gotest/array $ go build -o libtes
..
我有一个C函数可以填充C结构: typedef struct {字符名称[8];} 我需要将数据复制到具有相同内容的Go lang结构中: type sData结构{名称[8] byte} 该结构具有多个尺寸的参数:4、12、32,因此最好具有一个功能不只一个尺寸的函数. 谢谢 解决方案 要使其通用一些,可以将C char数组分解为 * C.char ,然后使用 un
..
我正在尝试使用具有2个int参数的相同签名来调用C函数.并且此错误无法调用非功能f(类型unsafe.Pointer). 程序包主要/*int add(int a,int b){返回a + b;}int sub(int a,int b){返回a-b;}*/导入"C"进口 ("fmt"“不安全")func main(){一个:= C.int(1)b:= C.int(2)fx:= make([] u
..
我正在尝试在cgo中开发sudo的插件. https://www.sudo.ws/man/1.8.15/sudo_plugin.man.html 将结构导出到policy_plugin的全局范围. 策略插件必须在全局范围内声明并填充 policy_plugin 结构. 您对此有何解释? export_test.go 程序包主要/*#include"sudo_plug
..
我正在Go中编写一个库,我想将其导出到C共享库.它工作正常,但是我发现导出的标头使用 p0 , p1 , p2 ,有点烦人...代替参数名称,而不是Go中的原始参数名称.有没有办法改变这种行为,还是我只是坚持下去? 我正在使用 go版本go1.12.7 darwin/amd64 示例: 程序包主要/*#import*/导入"C"进口 ("fmt")func ma
..
编辑:感谢@Not_a_Golfer,更改了标题以更好地反映问题 我一直在尝试Go,无法解决这个问题. 当包含在主程序包中时,以下命令可以正常工作: //定义一个回调函数类型,并为其定义一个调用程序输入Callback func(i C.int,d C.double)func调用(cb回调,i C.int,d C.double){cb(i,d)}//...然后定义我的回调并将其传递给
..
我试图在单个C二进制文件中包含多个Go c-archive软件包,但是由于每个c-archive中都包含完整的运行时,所以我遇到了多个定义错误. 我尝试将多个软件包放在同一个c归档中,但是go build不允许这样做. 我还尝试从所有档案中删除 go.o ,但似乎我自己的Go代码也位于该目标文件中,因此不起作用,甚至我得到多个定义的原因,而不是链接程序从后续存档中忽略了 go.o .
..
对于每个文档,使用cgo进行 go build 会将所有C/C ++文件添加到包的根目录中,作为编译的一部分.有没有一种方法可以使用CGO指令使给定子目录中的C/C ++文件也可以作为编译的一部分,也可以使其成为根目录中的文件? 解决方案 不是.您唯一的选择是使子目录成为另一个Go程序包,但随后您必须将所需的任何功能包装在导出的Go函数中,然后将其导入到项目中. 编译C/C ++文件
..
我有一个像这样的结构: typedef struct st_MASK_SETTINGS{uint32_t foo:1;uint32_t bar:7;} MASK_SETTINGS 现在通过cgo我想访问 foo -但找不到任何文档. 天真的 v:= ms.foo 抱怨没有字段或方法. 解决方案 好吧,你不会喜欢这个答案,但是 没有实现此目的的便携式方法,因为位域打包是“
..
我正在尝试与Go中的某些C代码进行交互.使用cgo,在我遇到这种(相当普遍的)情况之前,这一直是相对简单的:需要将指针传递给本身包含指向某些数据的指针的结构.我似乎无法从Go中弄清楚如何做到这一点,而不必诉诸将结构的创建放入C代码本身中,而我不希望这样做.这是一个说明问题的代码段: 程序包主要//typedef struct {//int size;//void * data;//}信息;///
..
在Golang Wiki的CGO部分中,有一个 游乐场: https://play.golang.org/p/e4jv8jfU_WI 输出: 1073741824 10737418241073741824 1073741824 [0 0 0 0 0 0 0 0]1073741824 1073741825紧急情况:运行时错误:切片范围超出范围goroutine 1 [运行中]:main.
..
我正在编写一些go代码,该代码可以导出如下功能: 程序包主要导入"C"//导出returnStringfunc returnString()字符串{//gostring:=“你好世界"返回gostring}func main(){} 我使用go build -buildmode = c-shared 来构建 .so 和头文件,但是当我调用 returnString()在我的C代码中,我得到
..
我正在尝试使用 CGO 将现有的Go程序包构建到C共享库和标头中. 我使用记录的 -buildmode c-shared 构建了程序包. -buildmode = c-shared构建列出的主软件包及其导入的所有软件包,进入C共享库.唯一可调用的符号将是使用cgo//export注释导出的那些函数.只需要列出一个主程序包 并使用//export Func 将函数公开为C符号.
..
我正在将用C语言编写的一些服务器代码移植到Go上,并且它使用了我真的不想重写的加密库.相反,我尝试使用Cgo编写包装程序,以便我的其余代码可以更轻松地调用它.这是lib标头的一部分: //encryption/encryption.h#定义CRYPT_BBCFG 1typedef struct {//...一堆田野...uint32_t bb_posn;} CRYPT_SETUP;int CRY
..