• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

go工具链目前[不支持编译windows下的动态链接库][1],不过[支持静态链接库][2] ...

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

go 工具链目前[不支持编译 windows 下的动态链接库][1],不过[支持静态链接库][2]。
想要产生dll,可以这样 workaround ,参考 golang [issuse#11058][1]:



    • 首先得装一个 windows 下的 gcc 开发环境,我用了 [msys2][3] 。

 

    • 需要配置一个快点的源,我用[中国科技大学的源][4]。

 

    • 安装 gcc 工具链: pacman -S mingw-w64-x86_64-toolchain (注意这里有个坑, msys64 根目录有两个 mingw64.* 文件会导致 pacman 安装失败,我是暴力重命名了冲突的文件。)

 

    • 编译静态链接库: go build -buildmode=c-archive -o libfoo.a foo.go

 

    • 准备导出符号定义文件, Sum 就是需要导出的函数名:
      $ cat foo.def
      EXPORTS
          Sum

 

    • 用 gcc 把静态链接库转成动态链接库: gcc -m64 -shared -o foo.dll foo.def libfoo.a -Wl,--allow-multiple-definition -static -lstdc++ -lwinmm -lntdll -lWs2_32

 

[1] https://github.com/golang/go/issues/11058
[2] https://github.com/golang/go/issues/13494
[3] http://msys2.github.io/
[4] https://lug.ustc.edu.cn/wiki/mirrors/help/msys2

 

Go从1.5开始就支持编译编译C调用的动态链接库

 

Shared libraries

Go 1.5 can produce Go shared libraries that can be consumed by Go programs.

Build the standard library as shared libraries:

$ go install -buildmode=shared std
Build a "Hello, world" program that links against the shared libraries:

$ go build -linkshared hello.go
$ ls -l hello
-rwxr-xr-x 1 adg adg 13926 May 26 02:13 hello
Go 1.5 can also build Go programs as C archive files (for static linking) or shared libraries (for dynamic linking) that can be consumed by C programs.

 

更多详细的用法可以参考
golang.org/s/execmodes

 

试试看 buildmode=c-archive 编译到 .a .h 包给 c 语言使用。。但是不支持 x86 只支持 amd64

 

$ go install -buildmode=shared std
-buildmode=shared not supported on windows/386

不支持 Windows...

 

https://gocn.io/question/205


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
[Go语言]从Docker源码学习Go——function和method发布时间:2022-07-10
下一篇:
Go项目实战:打造高并发日志采集系统(四)发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap