【C/C++编译】msys2中使用msvc编译的库

背景

msys2中使用msys2编译工具链,(cmake 指定生成MSYS Makefiles",并使用msys2的gcc等编译)

静态库

msys2中编译C/C++代码时,无法直接使用msvc编译的静态库,也无法直接使用linux环境下编译的静态库

动态库

可以使用msvc编译的动态库,在代码中Load,但应该只支持C语言函数接口。或者利用导入库在代码中包含头文件使用,此时也只支持C语言函数接口,编译时链接导入库,然后运行时自动搜索该动态库。

但注意,导入库也不能使用msvc编译出来的,需要通过其动态库*.dll文件及msys2中的gendefdlltool工具生成对应的导入库。

先运行

gendef *.dll

生成对应的.def文件

再运行

dlltool -d *.def -l *.a

生成该导入库

编译时,最好静态库的命名为lib*.a形式,此时链接无需依赖*.dll文件,并且程序内的导入表也只和*.def文件内的信息有关。否则编译时需要*.a*.dll文件放一起,并且导入表也会收到*.dll文件影响,可能导致导入表中的dll文件名与该文件的实际文件名不一致

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值