python 调用dll中c或c++语言带指针,数组方法

1、参数为指针的解决方法:

在项目开发中遇到了,python需要去调用一个动态链接库dll中的c++方法。这个方法的参数为一个指针类型的参数,一个bool类型参数

在python中并未对数字类型进行区分。

dll库中的方法为:

int LP_Agc  ( double *  a,  
  bool  b= true  
 )   

所以在调用这个方法之前,

第一步要将python中的类型转换为c语言类型。

这个应该是python自带的  

 

复制代码

a = c_double(1.0)

#同理

b = c_double(True)

#python中还有c_int(),c_float()等。需要什么用什么。可以在 _init_.py中找到这些方法。

复制代码

 

第二步 ,lgc中的第一个参数为 double类型的指针类型。。

在python中同样有使用指针的方法。pointer()

 

 

复制代码

pcdi = pointer(c_double(1.0))


即:

dll.LP_Agc(pointer(c_double(1.0),c_bool(True))  就可以成功调用方法。


复制代码

 

byref(n)返回的相当于C的指针右值&n,本身没有被分配空间:所以他只能作为参数。

pointer返回的相当于指针左值T* p=&n,可以改变,可以取地址:

2、参数为数组的解决方法:

dll库中的方法为:

int input[2] = [0, 1]

void printIntArray(int[] input)

{ for(int i = 0; i < 2; i ++)

   { print(input[i]); }

}

python调用上面的方法:

from ctypes import *

# 假设上面的代码被编译成了一个XXXXlib.so的文件
dll = CDLL('XXXXlib.so')

# 声明一个数组类型
INPUT = c_int * 2
# 实例化一个长度为2的整型数组
input = INPUT()
# 为数组赋值(input这个数组是不支持迭代的)
input[0] = 1
input[1] = 2

# 引用C语言的函数
print_int_array = dll.printIntArray
# 调用C语言的函数
print_int_array(input)

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值