① python运行导出DLL函数.问题,怎么解决
通常是在C里构造后,再返回到python里去。
从你的程序上看,调用完Thin后,你的变量p似乎变成了空指针。
ctypes调用DLL通常都是别人做好的DLL,没有办法才自己去调用。这里有好多麻烦事情。
如果是自己写代码,通常会建议你用cython这个模块。很容易就实现接口。你也不用担心这些变量类型与接口封装的问题。
另外我印象中dll似乎与编译器也有关系。用VC可能容易些。用BC,或者是GCC就麻烦些。
另外还有版本的问题,64位与32位不能通用。
原则上讲,你这种用法,也不是不可以,可能还是哪个地方没有弄对。比如编译参数。你可以试试用return type把数据带回来。而不是用指针写内存。
因为p目前按理它是常量,很有可能调用机制中,不会让你改写它。
② python 调用DLL的问题
那就是有内存泄露。内存没有释放。原因可能是多种。一种是你的DLL或者是AntiVC出了错。另外一种是ctypes出错。其中返回的内容没有释放内存。也许只有10个字节,但是长期积累还是很可观。
如果解决这个问题,就是稳定的程序,怎么用都不会坏。
还有一个保守的办法。如果你调用DLL的频率不是特别快。比如每秒不超过2000次。那么你可以将这个功能封装在一个服务进程里。线程再通过接口去访问。该 服务进程即使内存溢出崩溃了。也会自动重新启动。这样你的20个线程基本上只需要重试几次,等服务进程重新启动完成后,就可以获得结果。基本不影响使用。操作系统也很安全。因为进程退出后,所有的遗留错误都会清空。
③ tradex.dll过期
找到正确的DLL文件并将它拷贝到适当的目录下。
你可在其他电脑上找到正确的DLL文件并将它拷贝到适当的目录下,程序就能正确运行。DLL可在“C:Windows”目录“C:WindowsSystem32”目录和程序的安装目录中找到。如果启动的程序带有一个过期的DLL文件或不匹配的DLL文件,则会出现“未定义的动态链接调用”消息。
④ python调dll里的类,例如dll中有类cobject,类方法add,怎么调这个类方法呢
首先要把类操作用c语言包装一遍,再用python的API包装一个模块出来(以上两个都是c,不是c++),编译的时候编译成特殊的动态链接库,在python里面import当成普通模块调用
具体太复杂,自己找教程和api吧
⑤ tradex.dll是什么东西
DLL文件是动态链接库,这种库包含了可由多个程序同时使用的代码和数据。
并且从文件名是无法判断这个DLL是什么东西的。
⑥ 怎样用python调用dll
可以的,python中一般有两种方法调用DLL中的函数。1.直接使用函数名,函数名可以用dependencywalker等工具查看。(这个工具在vc或者vs的工具包中)[python]viewplainimportctypesdll=CTYPES.CDLL("test.dll")res=test(3,4)2.使用Ordinal,Ordinal可以用dependencywalker等工具查看。[python]viewplainimportctypesdll=CTYPES.CDLL("test.dll")res=dll[1](3,4)