0x01. 环境准备
A. GCC
在控制台中输入
gcc -v
如果提示命令未找到,那么说明你的计算机中还没有gcc,去安装一个吧,gcc官方网站:https://gcc.gnu.org/
如果从来没有安装过gcc的朋友可以直接安装win-build,可以帮你快速的安装
官方网站:http://mingw-w64.org/doku.php/download/win-builds
0x02. 编写go程序
我们这里只是编写一个简单的输出字符串的程序,接受一个字符串参数,然后将拼接成新的字符串并作为返回值返回,在这里,我们将文件命名为libhello.go
package main
import "C"
func helloLemonITCN(msg string) string {
return "LemonIT.CN : Hello! " + msg
}
func main() {
}
注意,即使是要编译成动态库,也要有main函数,上面的import "C"一定要有
0x03. 编译go程序
首先,将控制台的所在目录切换到go程序的所在目录,即libhello.go所在目录
A. Windows动态库
执行如下命令生成DLL动态链接库:
go build -buildmode=c-shared -o libhello.dll .\libhello.go
如果控制台没有报错,那么会在当前路径下生成libhello.dll文件
B. Linux/Unix/macOS动态库
执行如下命令生成SO动态库:
go build -buildmode=c-shared -o libhello.so .\libhello.go