首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >返回数组,ctype

返回数组,ctype
EN

Stack Overflow用户
提问于 2014-06-19 11:51:51
回答 1查看 618关注 0票数 0

我真的是个新手。我正在加载一个windows文件,并试图读取数组GetDfuFileInfo返回。实际上,我在ctype中加载了文件,因为我不知道如何将dfu_file*指针传递给GetDfuFileInfo函数。这有可能吗?

C++函数示例用法:

代码语言:javascript
复制
dfu_file* TheFile = ReadDfuFile(const char*);
dfu_file_info* Info = GetDfuFileInfo(dfu_file*);

Python代码:

代码语言:javascript
复制
lib = ctypes.WinDLL('dfulib.dll')
func = lib.ReadDfuFile
func.restype = ctypes.c_void_p
func.argtypes = [ctypes.c_char_p]
func("file.dvu")

编辑

也尝试过这样做:

代码语言:javascript
复制
lib = ctypes.WinDLL('dfulib.dll')
func = lib.ReadDfuFile
func.restype = ctypes.c_void_p
func.argtypes = [ctypes.c_char_p]

FileInfo = lib.GetDfuFileInfo
FileInfo.argtypes = [ctypes.c_void_p]
FileInfo.restype = None

s = func(r'file.dvu')
s = ctypes.cast(s, ctypes.c_char_p)

print FileInfo(s.value)

产生异常:

WindowsError: exception: access violation reading 0x00000016

任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2014-06-19 12:58:35

示例代码看起来,此代码从kernel32.dll调用GetFileAttributesA函数

代码语言:javascript
复制
>>> from ctypes import *
>>> windll.LoadLibrary("kernel32.dll")
<WinDLL 'kernel32.dll', handle 77260000 at 2241ad0>
>>> windll.kernel32
<WinDLL 'kernel32', handle 77260000 at 225c2f0>
>>> windll.kernel32.GetFileAttributesA("c:/test/1.txt")
32

有关详细信息,可以参考https://docs.python.org/2/library/ctypes.html

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24305920

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档