Go语言怎么实现CGO编程 |
您所在的位置:网站首页 › go打包静态文件 › Go语言怎么实现CGO编程 |
Go语言怎么实现CGO编程
发布时间:2023-04-07 10:30:12
来源:亿速云
阅读:90
作者:iii
栏目:开发技术
本文小编为大家详细介绍“Go语言怎么实现CGO编程”,内容详细,步骤清晰,细节处理妥当,希望这篇“Go语言怎么实现CGO编程”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。 基于 C 标准库实现最简单的 CGO 程序下面是我们构建的最简 CGO 程序: // hello.go package main //#include import "C" func main() { C.puts(C.CString("Hello, this is a CGO demo.\n")) }基于自己写的 C 函数构建 CGO 程序上面就是使用了C标准库中已有的函数来实现的一个简单的 CGO 程序。 下面我们再来看个例子。先自定义一个叫 SayHello 的 C 函数来实现打印,然后从 Go 语言环境中调用这个 SayHello 函数: // hello.go package main /* #include ;stdio.h; static void SayHello(const char* s) { puts(s); } */ import "C" func main() { C.SayHello(C.CString("Hello, World\n")) }除了 SayHello 函数是我们自己实现的之外,其它的部分和前面的例子基本相似。 我们也可以将 SayHello 函数放到当前目录下的一个 C 语言源文件中(后缀名必须是.c)。因为是编写在独立的 C 文件中,为了允许外部引用,所以需要去掉函数的 static 修饰符。 // hello.c #include void SayHello(const char* s) { puts(s); }然后在 CGO 部分先声明 SayHello 函数,其它部分不变: // hello.go package main //void SayHello(const char* s); import "C" func main() { C.SayHello(C.CString("Hello, World\n")) }模块化以上例子在编程过程中,抽象和模块化是将复杂问题简化的通用手段。当代码语句变多时,我们可以将相似的代码封装到一个个函数中;当程序中的函数变多时,我们将函数拆分到不同的文件或模块中。 在前面的例子中,我们可以抽象一个名为 hello 的模块,模块的全部接口函数都声明在 hello.h 头文件中: // hello.h void SayHello(const char* s);下面是 SayHello 函数的 C 语言实现,对应 hello.c 文件: // hello.c #include "hello.h" #include void SayHello(const char* s) { puts(s); }我们也可以用 C++语言来重新实现这个 C 语言函数: // hello.cpp #include extern "C" { #include "hello.h" } void SayHello(const char* s) { std::cout |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |