Python调用C++动态链接库返回数组
2021/12/22 1:20:03
本文主要是介绍Python调用C++动态链接库返回数组,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Windows下Python调用dll的教程网上有很多,包括返回常规变量和结构体变量的方法,但是返回数组的相关文章很少,这里通过一个简单的例子介绍通过ctypes模块调用dll返回数组的方法。
在test.cpp文件中添加如下测试函数:
float* ctest(float a) { static float x[3]; // 返回的数组必须是全局变量或者静态变量 x[0] = a; x[1] = a * a; x[2] = a * a * a; return x; }
用VS或者其他工具编译生成test.dll,创建test.py文件链接C函数和python函数:
import ctypes funtest = ctypes.cdll.LoadLibrary('./test.dll') # dll文件与py文件在同一目录下 funtest.ctest.restype = ctypes.POINTER(ctypes.c_float*3) # 设置返回值为指向3个float数据的指针 class cfun(object): def __init__(self): pass def ctest(self, a): return funtest.ctest(ctypes.c_float(a)) # 将实参转换为C语言中的类型
在main.py中导入test中的函数cfun类并实例化,调用ctest函数进行验证:
from test import cfun c = cfun() pfloat = c.ctest(1.2) print(pfloat.contents[0]) print(pfloat.contents[1]) print(pfloat.contents[2]) ''' 输出: 1.2000000476837158 1.440000057220459 1.7280001640319824 '''
这篇关于Python调用C++动态链接库返回数组的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-01Python编程基础知识
- 2024-11-01Python编程基础
- 2024-10-31Python基础入门:理解变量与数据类型
- 2024-10-30Python股票自动化交易资料详解与实战指南
- 2024-10-30Python入行:新手必读的Python编程入门指南
- 2024-10-30Python入行:初学者必备的编程指南
- 2024-10-30Python编程入门指南
- 2024-10-30Python量化交易学习:新手入门指南
- 2024-10-30Python股票自动化交易实战入门教程
- 2024-10-29Python股票自动化交易教程:新手入门指南