码迷,mamicode.com
首页 > 其他好文 > 详细

go创建动态库

时间:2017-12-08 14:09:18      阅读:112      评论:0      收藏:0      [点我收藏+]

标签:动态库   静态   参数   .so   std   question   bin   lin   may   

  • nix
    nix创建so比较方便,写好go代码之后,直接一条命令搞定。
go build -buildmode=c-shared -o libgobblob.so

命令执行之后,会生成libgobblob.h和 libgobblob.so

  • windows

windows需要安装gcc编译器,我用的的MinGW包,解压,把bin目录加入环境变量。

然后执行命令之后发现会报错,windows下go不支持生成动态库。

>>go build -buildmode=c-shared -o libgobblob.dll
-buildmode=c-shared not supported on windows/amd64

这一步折腾了好久,最终在stackoverflow找到了解决方法。[[ https://stackoverflow.com/questions/40573401/building-a-dll-with-go-1-7 | building-a-dll-with-go]]

  • 编译静态库
go build -buildmode=c-archive -o libgobblob.a
  • gobblob.c文件,然后把go代码中要导出的函数,在gobblob.c中全部调用一遍。
#include <stdio.h>
#include "libgobblob.h"

// force gcc to link in go runtime (may be a better solution than this)
void dummy() {
   // 所有在go中要导出的代码都在这里调用一次,参数随便写,只要能编译ok即可
    gobblob_init(NULL,NULL,NULL);
    gobblob_deinit(NULL);
    gobblob(NULL,NULL,NULL,NULL,NULL,NULL);
}

int main() {

}
  • 执行如下命令,生成dll

    gcc -shared -pthread -o libgobblob.dll gobblob.c libgobblob.a -lWinMM -lntdll -lWS2_32 -Iinclude

go创建动态库

标签:动态库   静态   参数   .so   std   question   bin   lin   may   

原文地址:http://www.cnblogs.com/fitness/p/8004494.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!