美文网首页
msvc7调用GO静态库

msvc7调用GO静态库

作者: 离骚学 | 来源:发表于2020-05-06 13:14 被阅读0次

    使用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静态库

          本文链接:https://www.haomeiwen.com/subject/tjgightx.html