python调用C++的 dll 算法

C++解压算法 dunzip32.dll

bool BinaryUnCompress (const char* src, char*& dst, unsigned long& dst_size);

//   BinaryUnCompress:
    //     src:      data to uncompress
    //     dst:      uncompressed data in internally allocated buffer
    //     dst_size: number of bytes of uncompressed data (this is not size of the buffer!)

Python 调用解压数据报错 应如何处理???

 

需要先确认下你的python版本,看你用print函数的方法应该是python3,但是报错路径里又有python27? 如果是在python3下: Date变量的类型实际上是字符串,但是ctypes.create_string_buffer()的第1个位置参数要么是int型表示要创建C 数组的大小,要么是bytes类型的对象。假设Date是utf8编码的,可以这样_date = bytes("Date",encoding='UTF8'),然后传入_date。 另外一个没有运行到所以还没有暴露的问题是:第7行用的函数名称叫dununzip(),你要调用的dll库里确实有这个函数吗,你实际是想调用BinaryUnCompress 这个函数吧?

错误提示全部是乱码,怎么分析原因哦。

您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

Python 2.7  这样调用是否对,尤其参数类型定义。

#-*- coding:UTF-8 -*-

是否需要先解码,不知道如何解。

 

UnicodeDecodeError: 'utf8' codec can't decode byte 0x98 in position 15: invalid start byte

 
dpd=dll.dunzip(ctypes.create_string_buffer(Date.decode("iso-8859-1"),Size),k,16*24*7*4)

 

ValueError: string too long

 

非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!

速戳参与调研>>>https://t.csdnimg.cn/Kf0y