概述
ctype调用DLL中的函数问题已经成功解决
(2005-10-12 12:56:18)
senddata.dll中的函数原型如下:
--------------------------------------------
int _stdcall SRDConnect(char *ExecName, int ShowState, RECT *Rect);#连接系统
int _stdcall SRDDisConnect();#关闭
int _stdcall SRDOpenFile(char *FileName, int *FileNo);#打开模板
int _stdcall SRDCloseFile(int FileNo);#关闭模板
python中对应函数声明如下:
------------------------------------------
hinst = ctypes.windll.LoadLibrary('f:\mtform\dtp\senddata.dll')
#LoadLibrary先
srdConnect = hinst.SRDConnect
#这一步是关键,等同于C中的GetProcAddress(HInst,
#"SRDConnect"),通过名字得到函数地址(指针)
srdDisConnect = hinst.SRDDisConnect
#下面是其它的函数
srdOpenFile = hinst.SRDOpenFile
srdCloseFile = hinst.SRDCloseFile
fileno = ctypes.c_int(0)
#由于要用到一个int *,在ctype中这样处理
pfileno = ctypes.pointer(fileno)
#poionter就是把一个int变成int*
srdConnect('f:\mtform\dtp\dtpw.exe',1,None)
#这里None原本是个结构在ctype中用class来代替,这里省略
srdOpenFile('f:\mtform\dtp\pingan\aaa.tpf',pfileno)
#pfileno就是一个int*
srdCloseFile(pfileno.contents)
#pointer.contents得到指针的内容
srdDisConnect()
还有其它的一些处理比如char*,数组,结构等处理,在文档中都有说明这里不再举例。
我看许多人卡壳就是不知如何得到Dll中的函数地址,昨晚我也是。奇怪的是在官方的文档中没有说明我的这种方法。文档中讲的其它方法我都试过了。
python的方便之处在于随时在命令行试。
分享:
喜欢
0
赠金笔
加载中,请稍候......
评论加载中,请稍候...
发评论
登录名: 密码: 找回密码 注册记住登录状态
昵 称:
评论并转载此博文
发评论
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。
最后
以上就是爱笑毛豆为你收集整理的c语言ctype函数指针,ctype调用DLL中的函数问题已经成功解决的全部内容,希望文章能够帮你解决c语言ctype函数指针,ctype调用DLL中的函数问题已经成功解决所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复