草庐IT

c++ - wchar_t 与 unsigned short 冲突

全部标签

c - 使用 cgo 构建共享对象时导出变量

我想使用带有选项gobuild-buildmode=c-shared的Go/Cgo构建一个.so库。函数导出良好,但我无法导出变量。我需要实现一个API,它通过调用一个void函数来工作,该函数设置各种全局属性的值。像这样:var(Gval1intGval2string//GvalN)funcf(){Gval1=1Gval2="qwerty"}.solib的客户端将运行f();之后,它可以通过寻址变量的名称来获取变量。我怎样才能导出它们?我曾尝试过这样的把戏:golangcgocan'texportvariablesbybuildmodec-shared,但没有成功(示例始终返回0,而

c - 有没有办法在调用 MakeWS2811() 后修改 rpi-ws281x-go 库中 LED 的亮度?

我一直在使用RaspberryPi和Golang来制作一些WS2812LED的动画。我一直在使用rpi-ws281x-go(https://github.com/rpi-ws281x/rpi-ws281x-go)库,它是一个围绕C库(https://github.com/jgarff/rpi_ws281x)的Go包装器。我对C不是很熟悉,更不用说C库的Go包装器了。我可以看到在C代码中,我可以访问和更改每次调用渲染函数时应用的LED的亮度。但是,在Go包装器库中,我看不到访问该变量的方法。我可以看到,当我调用ws2811.MakeWS2811(&opt)时,我可以在opt结构中设置亮度

c - 如何将 Go 绑定(bind)建模为使用 union 的 C 结构?

我目前正在写一个Gowrapper对于libfreefare.libfreefare的API包含以下功能:structmifare_desfire_file_settings{uint8_tfile_type;uint8_tcommunication_settings;uint16_taccess_rights;union{struct{uint32_tfile_size;}standard_file;struct{int32_tlower_limit;int32_tupper_limit;int32_tlimited_credit_value;uint8_tlimited_credi

unit-testing - Golang Mocking - 类型冲突问题

我正在模拟一个DataStore及其获取/设置功能。我遇到的问题是:不能在EventHandler的参数中使用s(类型*MockStore)作为类型*datastore.Storage这是因为我的EventHandler函数需要传递一个*datastore.Storage作为参数类型。我想使用我创建的MockStore而不是真正的数据存储来测试(http测试)EvenHandler()。我正在使用golangtestify模拟包。一些代码示例typeMockStorestruct{mock.Mock}func(s*MockStore)Get()...funcEventHandler(w

无法在 Golang 应用程序中使用已使用 cgo 编译的 C 库?

我正在尝试用Golang包装一个C库。我试图在已编译的库中调用C函数。我有一个.a文件和一个.so库文件。我需要在哪里放置库文件以及如何告诉cgo我正在使用这些库?我是C语言的新手。如有任何帮助,我们将不胜感激。 最佳答案 我将用这个示例来解释它:首先使用./libs/m.c构建libhello.a:#includeexternuint64_tAdd(uint64_ta,uint64_tb){returna+b;}对于此测试示例,libhello.a位于./libs/中:m.go└───libsm.clibhello.a然后gobu

c++ - 获得最佳组合的算法

我有ID为1、3、4、5、6、7的项目。现在我有如下数据。每行都有一个offerId。ArrayofIds由数组中的ID组合组成。Discount是该offerId的值offerId:ArrayofIds:Discounto1:[1]:45o2:[134]:100o3:[35]:55o4:[5]:40o5:[6]:30o6:[67]:20现在我必须选择所有提供最佳ID组合的offerId,即最大总折扣。例如在上面的例子中:可能的结果可能是:[o2,o4,o5]最大折扣为170(100+40+30)。注意。结果offerId应该是这样的ID不重复。o2,o4,o6的示例id为[1,3,4

CLI 与程序的纯 C/C++ 库?

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。关闭6年前。Improvethisquestion背景/上下文:我正在使用Golang开发LinuxNAS服务器(如FreeNAS或Rockstor),特定功能将是一个JSON-RESTAPI,以便您可以与LVM2、共享、包等问题:关于安全性、性能和开发时间,实现派生进程或为程序的某些功能使用native库的优点/缺点/最佳实践是什么?示例:对于我的特定用例,NAS管理系统将使用LVM2来管理卷。但是,您可以使用CL

go - 项目之间的类型冲突

我想将特定子域使用的代码移动到它自己的项目中,这些代码将由当前所在的主代码库导入。我能够成功地将代码从子域导入到主项目中,直到我添加gorilla多路复用器代码。例如,这有效://importsandnon-relevantroutesremovedforsimplicityr:=mux.NewRouter()//Primarysiterouteshere...s:=r.Host("subdomain-regex-here").Subrouter()s.HandleFunc("/",people.Index)http.ListenAndServe("localhost:8080",r)

c - 如何让cgo返回数组给c?

我正在用c调用golang,我想返回一个字符串数组和一个int数组,我这样做:packagemainimport"C"//exportSegfuncSeg(input*C.char,segs*[]*C.char,tags*[]int)(errChars*C.char){count:=10segs_:=make([]*C.char,10,10)fori:=0;i构建方式gobuild-olibacrf.so-buildmode=c-sharedclib.go这样调用它:#include#include#include"libacrf.h"intmain(intargc,char*argv

与 Go 之间的 C 指针转换

我正在使用FFmpeg为Windows平台编写一个应用程序,它是golang包装器goav,但我无法理解如何在C和Go之间传递C指针。我已经删除了C代码的所有相关部分,包装器和我的代码,如下所示:C代码-libavutil/frame.h#includetypedefstructAVFrame{#defineAV_NUM_DATA_POINTERS8uint8_t*data[AV_NUM_DATA_POINTERS];}去goav包装器packageavutil/*#cgopkg-config:libavutil#include#include//CcodeIadded:#includ