小白又来摸石头过河,详细记录一下这几天的写bug历程,作为一篇学习笔记。近期需要用python对厂家提供的lib静态库进行调用,众所周知,python对c/c++ 的函数库调用很方便,导入ctypes模块,处理好对应的数据类型,就可以方便实现对.so、.dll动态库的调用。但是ctypes只能动态调用,所以不支持对lib静态库的调用。
我们考虑利用vs2019将lib静态库打包成一个dll类型的动态库,再利用ctypes模块来调用,方案思路来源于其他文章。下边的过程利用了一个自定义的静态库来验证此方案。
一、建立自定义的lib静态库文件
首先我们打开vs2019,选择新建空项目或直接建静态库项目:
建立了空项目的,需要手打把项目的属性里配置类型改为静态库(.lib),注意修改属性时,平台选择的是在x64模式下,且注意在新建项目时也要把主界面上边的选成x64模式,因为python一般是64字节的,所以我们整个过程产生的文件和调试环境也设置成64字节模式下的。
新建头文件和c++文件,对应的代码如下,编写完成后,点击调试或生成解决方案:
于是我们可以在相对路径 .\x64\Debug 下找到生成的.lib文件:
二、在c++中调用生成的.lib静态库
在vs2019中新建一个空项目,把模式调整到x64的模式,在项目的相对路径下新建一个文件夹,用来存放我们自定义lib库的资料:
在其下一级目录,分别再新建一个lib文件夹和include文件夹,将第一步中的头文件和生成的lib文件,分别放入include文件夹和lib文件夹。
新建c++文件,输入一下代码:
#