草庐IT

cgo_unix

全部标签

go - 如何从 Go 语言调用此 C 函数(使用 Cgo 工具)

这是这个C函数声明CURL_EXTERNCURLcodecurl_easy_setopt(CURL*curl,CURLoptionoption,...);如何从Go中调用此函数?typeEasystruct{curlunsafe.PointercodeC.CURLcode}func(e*Easy)SetOption(optionC.CURLoption,...){e.code=C.curl_easy_setopt(e.curl,option,????))} 最佳答案 你不能直接调用它。CGO在C端不能很好地与可变参数函数一起使用。理

go - 如何从 Go 语言调用此 C 函数(使用 Cgo 工具)

这是这个C函数声明CURL_EXTERNCURLcodecurl_easy_setopt(CURL*curl,CURLoptionoption,...);如何从Go中调用此函数?typeEasystruct{curlunsafe.PointercodeC.CURLcode}func(e*Easy)SetOption(optionC.CURLoption,...){e.code=C.curl_easy_setopt(e.curl,option,????))} 最佳答案 你不能直接调用它。CGO在C端不能很好地与可变参数函数一起使用。理

go - 如何使用伪 CGO 指令在子目录中添加 C 文件作为 go build 的一部分?

根据文档,使用cgo的gobuild将在包的根目录中添加任何C/C++文件作为编译的一部分。有没有办法通过使用CGO指令使给定子目录中的C/C++文件也成为编译的一部分以及根目录中的文件? 最佳答案 不是真的。您唯一的选择是使该子目录成为另一个Go包,但是您必须将您需要的任何功能包装在导出的Go函数中,并将其导入您的项目。C/C++文件的编译对于基本需求来说是一种便利,但任何更复杂的东西都需要单独构建您的源代码,并提供适当的CGO指令以进行链接。Go工具链并不是一个完整的构建工具。 关于

go - 如何使用伪 CGO 指令在子目录中添加 C 文件作为 go build 的一部分?

根据文档,使用cgo的gobuild将在包的根目录中添加任何C/C++文件作为编译的一部分。有没有办法通过使用CGO指令使给定子目录中的C/C++文件也成为编译的一部分以及根目录中的文件? 最佳答案 不是真的。您唯一的选择是使该子目录成为另一个Go包,但是您必须将您需要的任何功能包装在导出的Go函数中,并将其导入您的项目。C/C++文件的编译对于基本需求来说是一种便利,但任何更复杂的东西都需要单独构建您的源代码,并提供适当的CGO指令以进行链接。Go工具链并不是一个完整的构建工具。 关于

sockets - go net/http unix域套接字连接

我在连接到我的服务器时遇到问题,该服务器监听Unix域套接字。Go的net/http包似乎无法使用套接字路径连接到目标。是否有更好的替代方案,而无需使用net创建我自己的HTTP协议(protocol)实现?我找到了很多解决方案,例如these,但他们不合适我试过:_,err:=http.Get("unix:///var/run/docker.sock")(将unix更改为path/socket。它总是提示不支持的协议(protocol) 最佳答案 你必须实现你自己的RoundTripper支持unix套接字。最简单的方法可能是只使

sockets - go net/http unix域套接字连接

我在连接到我的服务器时遇到问题,该服务器监听Unix域套接字。Go的net/http包似乎无法使用套接字路径连接到目标。是否有更好的替代方案,而无需使用net创建我自己的HTTP协议(protocol)实现?我找到了很多解决方案,例如these,但他们不合适我试过:_,err:=http.Get("unix:///var/run/docker.sock")(将unix更改为path/socket。它总是提示不支持的协议(protocol) 最佳答案 你必须实现你自己的RoundTripper支持unix套接字。最简单的方法可能是只使

multithreading - 使用 Go 1.2 的线程 CGO

编辑:这个问题没有实际意义。我误读了提交日期,它包含在现有版本的Go工具中。谢谢,詹姆斯!似乎即将发布的Go(1.3)将允许non-GothreadstocallCGOcallbacks.我想知道迄今为止,人们通常会做什么来绕过此限制。也就是说,我有一个自己创建线程的第三方库,我想从这些线程中获取一些信息到Go代码中。在代码的“C”端,某种从C线程到Go线程的切换机制?有什么方法可以在不调用Go的情况下将消息放入队列?其他想法? 最佳答案 您突出显示的提交是从去年2月开始的,也就是Go1.1版本之前的提交。它还引用了issue443

multithreading - 使用 Go 1.2 的线程 CGO

编辑:这个问题没有实际意义。我误读了提交日期,它包含在现有版本的Go工具中。谢谢,詹姆斯!似乎即将发布的Go(1.3)将允许non-GothreadstocallCGOcallbacks.我想知道迄今为止,人们通常会做什么来绕过此限制。也就是说,我有一个自己创建线程的第三方库,我想从这些线程中获取一些信息到Go代码中。在代码的“C”端,某种从C线程到Go线程的切换机制?有什么方法可以在不调用Go的情况下将消息放入队列?其他想法? 最佳答案 您突出显示的提交是从去年2月开始的,也就是Go1.1版本之前的提交。它还引用了issue443

macos - 在 Mac OS X 上使用 go 1.3 启用 cgo 进行交叉编译时出现问题

我尝试使用Go1.3在我的darwin/amd64MBP上将cgo代码交叉编译到linux/arm,但没有成功:(我的环境:go版本go1.3darwin/amd64我的目标:针对linux/arm交叉编译cgo代码。第一步:使用ct-ng构建gcc/g++交叉编译器。构建arm-unknown-linux-gnueabi-g++和arm-unknown-linux-gnueabi-gcc的路很长,但我终于做到了。我用简单的C/C++程序进行了测试,输出在我的linux/armR-Pi机器上运行良好。第2步:cd/path/to/go/srcsudoCGO_ENABLED=1CC_FO

macos - 在 Mac OS X 上使用 go 1.3 启用 cgo 进行交叉编译时出现问题

我尝试使用Go1.3在我的darwin/amd64MBP上将cgo代码交叉编译到linux/arm,但没有成功:(我的环境:go版本go1.3darwin/amd64我的目标:针对linux/arm交叉编译cgo代码。第一步:使用ct-ng构建gcc/g++交叉编译器。构建arm-unknown-linux-gnueabi-g++和arm-unknown-linux-gnueabi-gcc的路很长,但我终于做到了。我用简单的C/C++程序进行了测试,输出在我的linux/armR-Pi机器上运行良好。第2步:cd/path/to/go/srcsudoCGO_ENABLED=1CC_FO