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在使用时动态链接。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容