背景
要在python中调用c或者c++写的dll是我们在实际应用中常常会遇到的情况。
参考文章:ctypes的运用(把一个numpy数组传入c中)
c的dll程序
dll程序分(__fastcall,__cdecl,__stdcall)几种,我用的是在vs环境下的__cdecl,这方面的基础知识请自行百度,先看dll的代码:
h文件
// 因为给python测试,默认不给c\c++程序调用,所以直接写__declspec(dllexport),
// 如果要给c\c++调用,需要自己定义宏决定__declspec(dllexport)是导入还是导出
#include <windows.h>
extern "C"
{
__declspec(dllexport) int __cdecl testNumpy(uint16* pAOData, int len);
__declspec(dllexport) int __cdecl testNumpy_plus(uint16* pAOData, int len);
};
cpp文件
#include "dxx.h"
// 最简单的显示出宿主程序发过来的数据
__declspec(dllexport) int __cdecl testNumpy(uint16* pAOData, int len)
{
for(int i=0;i<len;i++)
{
printf("%d\t", pAOData[i]);
}
return 0;
}
// 修改宿主程序发过来的数据
__declspec(dllexport) int __cdecl testNumpy_plus(uint16* pAOData, int len)
{
for(int

本文详细介绍如何在Python中调用C或C++编写的DLL,包括使用ctypes库引用numpy对象的数据矩阵指针,以及如何在DLL中修改并返回数据至numpy。通过具体实例,展示了从DLL程序编写到Python环境下的调用全过程。
最低0.47元/天 解锁文章
4万+

被折叠的 条评论
为什么被折叠?



