使用Go导出静态库,vc7仅支持32位,所以go也是x86版本,win10下导出静态库会误报毒,添加忽略即可
go build -buildmode=c-archive -o *.a *.go
注释掉(或删除)导出的静态库头文件以下内容:
typedef __SIZE_TYPE__ GoUintptr;
typedef float _Complex GoComplex64;
typedef double _Complex GoComplex128;
这时候得到.a静态库文件,.h头文件
安装MingW 32位,版本建议比较新的版本,我使用的gcc version9.2.0
安装完成后配置环境变量方便使用。
顺便配置vc环境变量方便使用msvc lib工具
C:\Program Files (x86)\Microsoft Visual Studio .NET 2003\Vc7\lib 作为参考
创建一个*.def文件,用来声明导出符号
EXPORTS
function1 //方法名
function2
只有方法名
注意:*符号为用户文件名前缀,请大家自行替换
使用gcc来执行下面的操作生成dll文件
gcc *.def *.a -shared -lwinmm -lWs2_32 -o *.dll -Wl,--out-implib,*.dll.a
得到*.dll动态文件
这时,已经有了一个 *.dll 文件和一个 *.def 文件,用MSVC自带的 lib 程序生成MSVC可用的 .lib 文件:
lib /def:*.def /name:*.dll /out:**.lib /MACHINE:X86
**为自定义参数
网友评论