加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

go 工具链目前[不支持编译 windows 下的动态链接库]解决方案

发布时间:2020-12-14 02:30:48 所属栏目:Windows 来源:网络整理
导读:go 工具链目前[不支持编译 windows 下的动态链接库][1],不过[支持静态链接库][2]。 想要产生dll,可以这样 workaround ,参考 golang [issuse#11058][1]: 首先得装一个 windows 下的 gcc 开发环境,我用了 [msys2][3] 。 需要配置一个快点的源,我用[中国

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读