api流程控制1——ctypes,调用C的动态库
2013-12-01 11:54
197 查看
最近想把一组api做成一个界面,来控制流程。
问题1:使用IDLE中,直接执行程序报错
Traceback (most recent call last):
File "E:\study\python\client.py", line 143, in <module>
gtpdll = CDLL("test.dll")
File "D:\Python33\lib\ctypes\__init__.py", line 353, in __init__
self._handle = _dlopen(self._name, mode)
OSError: [WinError 126] 找不到指定的模块。
后来捣鼓了好久,才知道是缺少依赖的库。
在一次无意中发现,执行的py文件的时候,使用cmd模式,python *.py,会弹出缺少的依赖库名。
问题2:链表结构,就是struct里面有类型为struct的类型。在python中,可以按以下方式初始化
class TEST_LIST(Structure):
pass
TEST_LIST._fields_= [('prev',POINTER(TEST_LIST)),('next',POINTER(TEST_LIST)),('srcfilename',c_char*256),('destfilename',c_char*256)]
问题3:指向指针的指针
在实现的过程中,发现若函数参数为指向指针指针,若使用双层pointer表示,就会有问题,后来使用的是
list = TEST_LIST()
list_p = pointer(list)
然后传参时使用pointer(list_p)
问题4:数组初始化
destfile = (c_char*256)()
destfile.value = b'result.txt'
需要注意的是,若C代码中涉及strcmp,那么c_char*256,就需要改成len(destfile.value)
问题1:使用IDLE中,直接执行程序报错
Traceback (most recent call last):
File "E:\study\python\client.py", line 143, in <module>
gtpdll = CDLL("test.dll")
File "D:\Python33\lib\ctypes\__init__.py", line 353, in __init__
self._handle = _dlopen(self._name, mode)
OSError: [WinError 126] 找不到指定的模块。
后来捣鼓了好久,才知道是缺少依赖的库。
在一次无意中发现,执行的py文件的时候,使用cmd模式,python *.py,会弹出缺少的依赖库名。
问题2:链表结构,就是struct里面有类型为struct的类型。在python中,可以按以下方式初始化
class TEST_LIST(Structure):
pass
TEST_LIST._fields_= [('prev',POINTER(TEST_LIST)),('next',POINTER(TEST_LIST)),('srcfilename',c_char*256),('destfilename',c_char*256)]
问题3:指向指针的指针
在实现的过程中,发现若函数参数为指向指针指针,若使用双层pointer表示,就会有问题,后来使用的是
list = TEST_LIST()
list_p = pointer(list)
然后传参时使用pointer(list_p)
问题4:数组初始化
destfile = (c_char*256)()
destfile.value = b'result.txt'
需要注意的是,若C代码中涉及strcmp,那么c_char*256,就需要改成len(destfile.value)
相关文章推荐
- 视频通过的流程API调用操作控制
- 【手机网络游戏 编程】C#异步socketAPI调用 处理数据的流程
- hibernate实现 api调用标准流程
- 批处理流程控制及调用命令call和start,goto
- novaclient的api调用流程与开发
- hibernate实现 api调用标准流程
- 在QML中调用symbian remote control API 控制音量键
- openstack 调用API 实现云主机的IO 控制,CGroup 策略
- 【OpenVswitch源码分析之三】控制面关键接口与调用流程
- c#调用api控制windows关机示例
- 【OpenVswitch源码分析之四】控制面关键接口与调用流程
- c#调用api控制windows关机示例(可以重启/注销)
- Java学习笔记 Java调用Win32 API控制鼠标活动范围
- jBPM学习笔记4--流程控制及API使用
- JBPM(五)——使用JBPM4 Service API控制流程
- 如何使用Spring Cloud – 简单服务流程(服务发现与API调用)
- C#调用SCL2008 动态库SCL_API_cdecl.dll or SCL_API_Stdcall.dll,提示找不到指定模块
- Realtek 2861 7.1方案 底层接口API调用流程分析
- C语言调用API控制鼠标指针
- 一天一篇批处理之——Part4:流程控制及调用命令goto,call,start