Tag: Go

  • Go语言调用C

    Go语言十分简单,跨平台,非常适用于网络应用的开发,本人相当看好。不过很多时候,还是需要扩展Go让Go实现更多的功能,如操作底层硬件、创建窗口等,这个要求可以通过调用C的方式实现。 本文以windows下的Go开发为例,linux完全一样。当然,Windows上首先要安装MinGW. http://www.hoverlees.com/blog/?p=1465 先做一个GO显示一个对话框窗口的简单示例。在go目录src/pkg下新建一个文件夹名为hover,新建一个hover.go文件,内容如下 与其说这是一个go源码文件,还不如把它理解成C语言的模板文件,cgo编译时,会把这个文件的内容转换成C程序并使用gcc编译,所以本人强列推荐将这个程序当成C程序阅读。程序中第二行的注释会在转换成C语言时做为C的代码。Msgbox会调用Windows系统函数MessageBox,并传入对应参数。由于go的数据类型与C语言的数据类型在内存中的表示不同,所以需要转换。Go与C的数据类型对有对应的转换方式,具体可以参看文档。因为MessageBox的第二第三个参数是LPSTR(unsigned char*),所以在调用时需要将Go的string转换成LPSTR类型。 接下来编译和安装函数包: 编译完成后,可以在程序中import这个hover库。下面写一个简单的程序调用刚刚写好的函数 最终生成的程序会弹出一个对话框,标题和内容都按程序指定的显示。