• *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

最新文章

  1. 在ASP.NET Core中使用Angular2,以及与Angular2的Token base身份认证
  2. Ado.Net事物处理
  3. java 堆栈分析
  4. Android 插件化
  5. PHP基础班初学心得:关于网页创作
  6. Java设计模式——装饰者模式
  7. mysqld.exe 占了400M内存的问题
  8. SQL Server:分离和重新附加数据库
  9. 【转】Mysql中的排序规则utf8_unicode_ci、utf8_general_ci的区别总结
  10. herf窗口点击跳转
  11. iOS学习笔记总结整理
  12. 引擎设计跟踪(九.14.2c) 最近一些小的更新
  13. WebSocket 支持的浏览器
  14. 《MySQL必知必会》[02] 多表联合查询
  15. ios中的safari转换时间戳问题
  16. Python基础:语法基础(3)
  17. linux环境下安装jmeter,启动执行脚本
  18. 纯JS编写打地鼠游戏
  19. GDB 自动化操作的技术-PYTHON
  20. Spark 任务提交脚本

热门文章

  1. 微信小程序UI自动化: minium文档部署
  2. [Luogu P2891/POJ 3281/USACO07OPEN ]吃饭Dining
  3. SSM使用Ueditor
  4. Git命令之diff
  5. filter 请求过程中过滤链组装和调用解析
  6. CF1295E Permutation Separation
  7. [.Net Core 3.0+/.Net 5] System.Text.Json中时间格式化
  8. 基于gin的golang web开发:mysql增删改查
  9. 安装使用Pycharm及Anaconda最全教程
  10. netfilter 的扩展功能 helper tftp-nat