草庐IT

c++-standard-library

全部标签

bash - Golang OpenGL 错误 PlatformError : X11: The DISPLAY environment variable is missing panic: NotInitialized: The GLFW library is not initialized

我似乎无法让opengl与golang一起工作。我想尝试golang,但设置起来非常痛苦,现在我无法得到我从thiswebsite复制粘贴的东西.这是我使用的代码:(fromthewebsite).我在运行它之前执行了这两个命令(在Windows上使用wsl):gogetgithub.com/go-gl/gl/v4.1-core/glgogetgithub.com/go-gl/glfw/v3.2/glfw这是我得到的完整错误:2018/11/2113:43:33PlatformError:X11:TheDISPLAYenvironmentvariableismissingpanic:N

c - 添加文件到/usr/local/include

我最近在一台linux机器上安装了openjtalk,我希望能够用Go包装它。openjtalk的源文件有几个不同来源的子文件夹,我假设是编译器找到的,因为有make文件。我应该将每个子文件夹复制到/usr/local/include中吗?这是修复包含依赖项的“正确”方法吗?根据我的测试,如果我复制包含的文件,Go似乎可以找到它们,但我不确定这是否是正确的linux做事方式。 最佳答案 更改外部库的位置通常不是一个好主意。有些库会自动将自己放入编译器的包含路径中,但对于那些不这样做的库,将它们的路径添加到编译器的包含路径中总是一个更

c - 如何将 char * 更改为等效的 Go

我有一些看起来像这样的C代码-*((Oid*)((char*)(tup)其中Oid是一个uint32类型,tup是一个结构。我想把它转换成golang。我已经解码了结构,但无法弄清楚如何将上面的行转换为golang。 最佳答案 Go等价于转换C指针是将指针转换为unsafe.Pointer,然后可以将其转换为您希望的任何类型的指针。如果tup是指向C中结构的指针,您可以将它转换为*uint32,如下所示:u:=(*uint32)(unsafe.Pointer(C.tup)) 关于c-如何

reflection - 戈朗 : How can I use refect package with exsisting library

我想从函数名调用现有库中的函数。在golang中,只要从methodname调用method就OK了,因为reflectpackage有(vValue)MethodByName(namestring)。但是,对于调用方法,所有方法参数都应该是reflect.Value。如何调用参数不是reflect.Value的函数。packagemain//-------------------------------//Exampleofexistinglibrary//-------------------------------typeClientstruct{idstring}typeMet

c - 不在 cgo 中显示 printf 结果

当我运行这段代码时,我希望打印出类似A:4,B:89的结果。但实际上,不显示任何内容。为什么这个程序不将结果显示到标准输出?main.go:packagemain/*#include"c.h"*/import"C"import("unsafe")typeSstruct{AintBint}funcmain(){s:=&S{A:4,B:89}pass_to_c:=(*C.S)(unsafe.Pointer(s))C.gostruct(pass_to_c)}c.h#include#includetypedefstruct{longintA;longintB;}S;externvoidgost

c - 像 OpenMP 这样的 golang 中有一个简单的 `parallel for` 吗?

我正在尝试使用并行处理优化拼图,以获得更好的性能。理想情况下,在带有OpenMP的C99中,我应该能够在有问题的for循环之前借助#pragmaompparallelfor来做到这一点,然后应该由系统在CPU之间分配负载。Go的官方文档位于https://golang.org/doc/effective_go.html#parallel,但是,似乎表明对于并行处理,我必须,(0),手动从运行时环境中获取内核数量,(1),遍历所述内核,(2),有效地为每个内核编写一个不同的for循环核心,(3),再次遍历核心以确保所有内容都得到处理。我错过了什么吗?对于最简单的情况,使用古老C的Open

elasticsearch - Golang : Using ElasticSearch library called Goes, 如何为 bool should 方法编写可执行代码?

我正在使用gos库(https://github.com/OwnLocal/goes),它是Golang中ElasticSearch的包装器。在ElasticSearch查询中,我们可以这样运行:{"query":{"match":{"user_id_1":"438018"}}}而且有效。对于使用gos的golang,你可以像这样运行它:varquery=map[string]interface{}{"query":map[string]interface{}{"match":map[string]interface{}{"user_id_1":"438018",},},}这是我的问题

c - O_NONBLOCK SOCK_STREAM 限制为 8192

我正在从C程序写入SOCK_STREAM正在从go程序监听的Unix域套接字,使用net.Listen("unix",sockname).当我将套接字设置为O_NONBLOCK使用fcntl(),我看到C程序在第一次写入时只写入了8192字节。失败后,我监控并回写剩余数据,但我服务器上读取的数据在这种情况下是无效的。当我不使用O_NONBLOCK时,然后整个8762字节被写在一个单一的写入中,一切都按预期工作。C客户端套接字连接if((fd=socket(AF_UNIX,SOCK_STREAM,0))==-1){return;}intflags=fcntl(fd,F_GETFL,0);

c - 为什么我用cgo的时候报错 "undefined reference to ` add2”

目录如下:-包括测试.h-liblibmytest.so-源代码测试.gotest.go代码如下:packagemain/*#cgoCFLAGS:-I../include#cgoLDFLAGS:-L../lib-lmytest#include"Test.h"*/import"C"funcmain(){C.add2(10,10)}当我使用gobuildtest.go时,控制台报告:#command-line-arguments/tmp/go-build168903458/command-line-arguments/_obj/test.cgo2.o:在函数_cgo_9efddd4c1a4

golang 中的 C long double

我正在将算法从C移植到Go。我有点困惑。这是C函数:voidgauss_gen_cdf(uint64_tcdf[],longdoublesigma,intn){inti;longdoubles,d,e;//Calculations...for(i=1;i并在for循环中将值“s”分配给数组cdf中的元素“x”。这怎么可能?据我所知,longdouble是float64(在Go上下文中)。所以我不应该能够编译C代码,因为我正在将一个longdouble分配给一个只包含uint64元素的数组。但C代码运行良好。那么有人可以解释为什么这是有效的吗?非常感谢。更新:函数的原始C代码可以在这里找