Java调用Golang生成的动态库(dll,so)

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

原文 

https://studygolang.com/articles/13604

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。

PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处:Harries Blog™ » Java调用Golang生成的动态库(dll,so)

赞 (0)
分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址