Tag: gccgo

在GoLang应用程序中使用C(++)来提高性能

我几天前就开始研究Go了,它来自CGO的东西和gccgo编译器。 根据我的理解,这允许使用Go编译器编译Go程序并使用C编译器编译C库并从Go程序内引用这些库。 这对我来说非常有趣,因为这使我们可以从主程序中利用C的性能(如果需要),而且开销很小。 但是我不确定那是多么的少,所以我在这里问: 是否有创建C库的情况只是为了在Go应用程序中使用它? 或者此function仅用于促进现有C代码的可重用性? PS:我认为目前CGO不支持C ++,但是有人发表了一篇能够使用C函数包装C ++代码并成功调用它们的post。

使用Go 1.5 buildmode = c-archive与从C链接的net / http.Server

即将发布的Go 1.5版本附带了新的构建模式 ,允许导出Go符号从C代码链接和调用。 我一直在玩它并得到基本的“Hello world”示例,但是现在我正在尝试链接一个启动net/http.Server的Go库并且它失败了。 代码看起来像这样( 它也可以在这里获得 ): gohttplib.go: package main import “C” import “net/http” //export ListenAndServe func ListenAndServe(caddr *C.char) { addr := C.GoString(caddr) http.ListenAndServe(addr, nil) } func main() {} 实例/ C / main.c中: #include #include “../../gohttplib.h” int main() { ListenAndServe(“:8000”); return 0; } 生成静态链接的对象和标头工作正常: $ go build -buildmode=c-archive 但是编译它是失败的: $ gcc -o gohttp-c examples/c/main.c […]