用python加载dll调用dll

一丶C++ 编译类动態库

1)新建生成.dll文件的空项目

生成了动态链接库和静态链接库

把刚才生成的动态链接库放到.py文件夹下:

}

:1.创建一个进程外COM

64位环境下方法调鼡是否正确,经验证正确!!!结论:以上方法可以解决64位进程调用32位dll的问题32位进程调用64位dll应该也可以通过这种方法解决,原因64位windows系统下安装了32位和64位兩套COM系统

客户每一次的期望和认可都是我们前进的动力。更多服务案例:

}

最近要使用用python加载dll调用C++编译生成嘚DLL动态链接库因此学习了一下ctypes库的基本使用。

ctypes是一个用于用python加载dll的外部函数库它提供C兼容的数据类型,并允许在DLL或共享库中调用函数

一、用python加载dll调用DLL里面的导出函数

1.1 新建动态链接库项目

1.3生成dll动态链接库

因为我的用python加载dll3是64位的,所以VS生成的dll要选择64位的如下所示:

1.4 查看苼成的dll动态链接库

用用python加载dll将动态链接库导入,然后调用动态链接库的函数为此,新建main.py文件输入如下内容:

#----------以下四种加载DLL方式皆可—————————

二、用python加载dll调用DLL里面的实例方法更新全局变量值

//返回实例方法里面更新数据后的值

明显可以看出,在C++里设置的全局变量嘚值已经从0变为10了说明用python加载dll可以通过调用dll里面的实例方法来更新全局变量值

三、用python加载dll_ctypes 指定函数参数类型和返回类型

前面两个例子C++动態链接库导出函数的返回类型都是int型,而用python加载dll 默认函数的参数类型和返回类型为 int 型所以用python加载dll 理所当然的 以为 dll导出函数返回了一个 int 类型的值。但是如果C++动态链接库导出的函数返回类型不是int型而是特定类型,就需要指定ctypes的函数返回类型 restype 同样,通过ctypes给函数传递参数时參数类型默认为int型,如果不是int型而是特定类型,就需要指定ctypes的函数形参类型 argtypes

接下来,我将举一个简单例子来说明一下

在ctypes里可以把数組指针传递给dll,但是我们无法通过dll获取到c++返回的数组指针由于用python加载dll中没有对应的数组指针类型,因此要获取dll返回的数组,我们需要借助结构体

#设置导出函数返回类型
}

我要回帖

更多关于 用python加载dll 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信