概述
- 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
转载于:https://www.cnblogs.com/fitness/p/8004494.html
最后
以上就是结实橘子为你收集整理的go创建动态库的全部内容,希望文章能够帮你解决go创建动态库所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复