关于ctypes调用dll时的参数类型和返回值类型问题

python 调用dll时,一般要指定参数类型和返回值类型:


import ctypes
ll=ctypes.CDLL("pythontest3.dll")
path= ctypes.c_char_p("C:\Users\Public\Pictures\Sample Pictures\\a.jpg")
path2= ctypes.c_char_p("C:\Users\Public\Pictures\Sample Pictures\\b.jpg")
ll.MSE.restype = ctypes.c_double#指定MSE的返回类型为double
ll.PSNR.restype=ctypes.c_double#指定PSNR的返回值为double
 
指定返回值类型很重要,否则得到的结果会有错误

ll.abc.argtypes =[ctypes.c_char_p,ctypes.c_char_p]#指定参数类型
print ll.MSE(path.value,path.value)
 

 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python调用 C++ DLL,你可以使用 ctypes 库来实现。在定义传入和返回值,需要注意以下几点: 1. 确定函数名字和所在库的路径。 2. 确定函数的参数类型返回值类型,如 int、float、double、char* 等。你可以使用 ctypes.c_int、ctypes.c_float、ctypes.c_doublectypes.c_char_p 等 ctypes 提供的类型来表示 C++ 中的数据类型。 3. 为函数指定参数类型返回值类型。你可以使用 `ctypes.cdll.LoadLibrary()` 加载动态链接库,然后使用 `dll.func.argtypes` 和 `dll.func.restype` 来设置参数类型返回值类型。 下面是一个简单的示例代码,用于调用 C++ DLL 中的 `add` 函数,该函数接受两个整型参数返回它们的和。 ```python import ctypes # 加载动态链接库 dll = ctypes.cdll.LoadLibrary("path/to/dll") # 指定函数名和参数类型返回值类型 add_func = dll.add add_func.argtypes = [ctypes.c_int, ctypes.c_int] add_func.restype = ctypes.c_int # 调用函数并输出结果 a = 10 b = 20 result = add_func(a, b) print(f"{a} + {b} = {result}") ``` 在这个示例中,我们使用 `ctypes.cdll.LoadLibrary()` 加载了一个名为 `dll` 的动态链接库。然后,我们使用 `dll.add` 来指定要调用的函数名字。接下来,我们使用 `add_func.argtypes` 来指定该函数的参数类型,即两个整型参数。最后,我们使用 `add_func.restype` 来指定该函数的返回值类型,即一个整型值。最后,我们调用 `add_func(a, b)` 来执行该函数,并将结果赋值给 `result` 变量。最后,我们输出运算结果。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值