msvc7调用GO静态库

使用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

**为自定义参数

使用方法:*.lib用于编译代码,.dll在使用时动态链接。

你可能感兴趣的:(msvc7调用GO静态库)