草庐IT

cgo_unix

全部标签

unix - 如何在 Go 中以跨平台的方式按名称列出可用的操作系统信号?

假设我正在Go中实现kill程序。我可以从命令行接受数字信号和PID,并将它们发送到syscall.Kill没问题。但是,我不知道如何实现信号调度的“字符串”形式,例如kill-INT12345。真正的用例是提示用户发送终止信号的较大程序的一部分;不能替代kill。问题:如何在任何受支持的平台上在运行时将有效信号名称转换为信号编号(或者至少无需编写要在编译时运行的每个平台代码)?我尝试过的:保留信号名称到数字的静态映射。这不适用于跨平台方式(例如,kill-l在MacOSX上与现代Linux和旧版Linux上返回不同的信号列表)。使该解决方案在一般情况下正常工作的唯一方法是为每个操作系

unix - 如何在 Go 中以跨平台的方式按名称列出可用的操作系统信号?

假设我正在Go中实现kill程序。我可以从命令行接受数字信号和PID,并将它们发送到syscall.Kill没问题。但是,我不知道如何实现信号调度的“字符串”形式,例如kill-INT12345。真正的用例是提示用户发送终止信号的较大程序的一部分;不能替代kill。问题:如何在任何受支持的平台上在运行时将有效信号名称转换为信号编号(或者至少无需编写要在编译时运行的每个平台代码)?我尝试过的:保留信号名称到数字的静态映射。这不适用于跨平台方式(例如,kill-l在MacOSX上与现代Linux和旧版Linux上返回不同的信号列表)。使该解决方案在一般情况下正常工作的唯一方法是为每个操作系

opengl - 使用 cgo 链接 Windows DLL

我的最终目标是从Go包成功链接到许多DLL(opengl32.dllglfw.dll和glu32.dll)——但是tryingtolinktothego-glfwpackagegaveme"notdefined"errors.所以我决定从%GOROOT%\misc\cgo\life中的简单未修改示例中获取一个非常简单的cgo动态/共享库链接来工作。但只是调用命令gobuild-olifemain.go失败并出现基本相同的链接器错误,即:go-build374967034/_/C_/Go/misc/cgo/life.a(c-life.o)(.text):_assert:notdefine

opengl - 使用 cgo 链接 Windows DLL

我的最终目标是从Go包成功链接到许多DLL(opengl32.dllglfw.dll和glu32.dll)——但是tryingtolinktothego-glfwpackagegaveme"notdefined"errors.所以我决定从%GOROOT%\misc\cgo\life中的简单未修改示例中获取一个非常简单的cgo动态/共享库链接来工作。但只是调用命令gobuild-olifemain.go失败并出现基本相同的链接器错误,即:go-build374967034/_/C_/Go/misc/cgo/life.a(c-life.o)(.text):_assert:notdefine

go - 我可以将 cgo 与 Windows SDK 一起使用吗?

我刚刚尝试过tdm-gcc并且它可以工作,但是可以将cgo与WindowsSDK一起使用吗? 最佳答案 是的,Windows支持cgo。还有一些openissues不过,您可能想看看。我相信还有somefixes自go1以来就已存在,因此您可能需要从更靠近尖端的地方开始工作(我不记得它们是否在go1.0.3中)。 关于go-我可以将cgo与WindowsSDK一起使用吗?,我们在StackOverflow上找到一个类似的问题: https://stackove

go - 我可以将 cgo 与 Windows SDK 一起使用吗?

我刚刚尝试过tdm-gcc并且它可以工作,但是可以将cgo与WindowsSDK一起使用吗? 最佳答案 是的,Windows支持cgo。还有一些openissues不过,您可能想看看。我相信还有somefixes自go1以来就已存在,因此您可能需要从更靠近尖端的地方开始工作(我不记得它们是否在go1.0.3中)。 关于go-我可以将cgo与WindowsSDK一起使用吗?,我们在StackOverflow上找到一个类似的问题: https://stackove

types - 戈朗 : Export C fields to be externally visible using CGo

背景:我正在尝试制作一个包,该包实质上是围绕我正在使用的C库提供精简的Go包装器。该包有意非常原始,因为其他几个包依赖于C库的低级功能,我不想复制粘贴一堆Go包装器代码。假设我有一个如下所示的C结构:typedefstruct{uint32_tfizz;uint64_tbuzz;}test在CGo中,我包装了C结构并创建了如下新方法:packagetesttypeTestC.testfuncNewTest()*Test{return&Test{1,2}}问题是在包之外,我无法访问C-struct中的字段packagemainimport"test"funcmain(){t:=test.

types - 戈朗 : Export C fields to be externally visible using CGo

背景:我正在尝试制作一个包,该包实质上是围绕我正在使用的C库提供精简的Go包装器。该包有意非常原始,因为其他几个包依赖于C库的低级功能,我不想复制粘贴一堆Go包装器代码。假设我有一个如下所示的C结构:typedefstruct{uint32_tfizz;uint64_tbuzz;}test在CGo中,我包装了C结构并创建了如下新方法:packagetesttypeTestC.testfuncNewTest()*Test{return&Test{1,2}}问题是在包之外,我无法访问C-struct中的字段packagemainimport"test"funcmain(){t:=test.

pointers - cgo指针值改变

我使用cgo绑定(bind)到Capi(子弹物理引擎),一些函数使用数据指针。我的想法是,我可以将一个指针附加到一个对象,并在稍后物理引擎调用回调时检索它。我的问题是,当我取回值(value)时,它发生了变化,而我没有这样做。似乎没有源代码明确地更改值。碰撞对象:source,header,Thegocodesthatinterractswiththatclass这里是我如何发送值,重新转换为*int和int没问题,打印出正确的数字:num:=x*amounty*amountz+y*amountz+z+1ptr:=unsafe.Pointer(&num)fmt.Printf("crea

pointers - cgo指针值改变

我使用cgo绑定(bind)到Capi(子弹物理引擎),一些函数使用数据指针。我的想法是,我可以将一个指针附加到一个对象,并在稍后物理引擎调用回调时检索它。我的问题是,当我取回值(value)时,它发生了变化,而我没有这样做。似乎没有源代码明确地更改值。碰撞对象:source,header,Thegocodesthatinterractswiththatclass这里是我如何发送值,重新转换为*int和int没问题,打印出正确的数字:num:=x*amounty*amountz+y*amountz+z+1ptr:=unsafe.Pointer(&num)fmt.Printf("crea