导航:首页 > 编程语言 > pythondll

pythondll

发布时间:2022-02-05 03:01:35

A. python有没有办法能够编译成DLL文件

通用情况下,没有什么好办法能把python编译成dll,因为python是解释型语言,dll是编译后的二进制文件,2者不在一个次元。除非你把python的解释器也打包进你的工程,并在你的exe里调用。
但某些特殊情况下,也有把python的代码编译成dll文件的方法,在.net环境下,可以用IronPython这个工具,它可以把python代码编译成dll。

B. python安装 win7。 缺失dll 文件

用下我这个试下,我在这机器上安装正常运行。里面除了python外还有一些库,还有安装教程。

C. python调dll里的类,例如dll中有类cobject,类方法add,怎么调这个类方法呢

首先要把类操作用c语言包装一遍,再用python的API包装一个模块出来(以上两个都是c,不是c++),编译的时候编译成特殊的动态链接库,在python里面import当成普通模块调用
具体太复杂,自己找教程和api吧

D. python里面如何释放DLL文件

调用dll的代码采用如下顺序:
dll = CDLL(dllPath)
update_out = UpdateParamStruct()
dll.SeUpdaterGetParam(case.updateType, byref(update_out))

win32api.FreeLibrary(dll._handle)
这样就可以在执行完后,dll文件不会处于占用的状态了~

E. python 能用来写动态链接库(dll文件)吗

python可以调到动态连接库,但不能编写编译出动态链接库,底层的东西,还是用c++写吧

F. python 调用DLL的问题

那就是有内存泄露。内存没有释放。原因可能是多种。一种是你的DLL或者是AntiVC出了错。另外一种是ctypes出错。其中返回的内容没有释放内存。也许只有10个字节,但是长期积累还是很可观。

如果解决这个问题,就是稳定的程序,怎么用都不会坏。

还有一个保守的办法。如果你调用DLL的频率不是特别快。比如每秒不超过2000次。那么你可以将这个功能封装在一个服务进程里。线程再通过接口去访问。该 服务进程即使内存溢出崩溃了。也会自动重新启动。这样你的20个线程基本上只需要重试几次,等服务进程重新启动完成后,就可以获得结果。基本不影响使用。操作系统也很安全。因为进程退出后,所有的遗留错误都会清空。

G. python调用外部C#库的dll文件

importclr
importSystem

clr.AddReferenceToFile("SimpleHash.dll")
fromCommonimport*

classHashPy(SimpleHash):
def__init__(self):
pass

defHashCalc(self,arg1,arg2):
#strtobyte[]
arg1=System.Text.Encoding.Default.GetBytes(arg1)
arg2=System.Text.Encoding.Default.GetBytes(arg2)

returnSimpleHash.HashCalc(self,arg1,arg2)

audiobuff='
12345678
12345678
'
key='12345678'

printHashPy().HashCalc(audiobuff,key)

python ctype只能调用c/c++. 你要调用c#的dll 要用IronPython。如上面的例子

H. python调用dll中的函数时报错

似乎代码里没有看到你没有加载DLL啊。
另外你在c里直接改写python的内存可能不太妥当。通常是在C里构造后,再返回到python里去。

从你的程序上看,调用完Thin后,你的变量p似乎变成了空指针。

ctypes调用DLL通常都是别人做好的DLL,没有办法才自己去调用。这里有好多麻烦事情。

如果是自己写代码,通常会建议你用cython这个模块。很容易就实现接口。你也不用担心这些变量类型与接口封装的问题。

另外我印象中dll似乎与编译器也有关系。用VC可能容易些。用BC,或者是GCC就麻烦些。

另外还有版本的问题,64位与32位不能通用。

原则上讲,你这种用法,也不是不可以,可能还是哪个地方没有弄对。比如编译参数。你可以试试用return type把数据带回来。而不是用指针写内存。

因为p目前按理它是常量,很有可能调用机制中,不会让你改写它。

I. 我现在想把自己写的python模块源代码封装成dll,然后在别的python脚本里调用,可以吗

可以的,只要把python模块转换成dll模块,利用Python自带的ctypes模块加载调用就行。

ctypes 是Python的外部函数库。它提供了与 C语言兼容的数据类型,并允许调用 DLL 或共享库中的函数。可使用该模块以纯 Python 形式对这些库进行封装。

ctypes导出了cdll对象,在 Windows 系统中还导出了windll和oledll对象用于载入动态链接库。通过操作这些对象的属性,你可以载入外部的动态链接库。cdll载入按标准的cdecl调用协议导出的函数,而windll导入的库按stdcall调用协议调用其中的函数。

(9)pythondll扩展阅读:

加载调用DLL的相关方法:

1、加载DLL

加载的时候要根据你将要调用的函数是符合什么调用约定的。

stdcall调用约定:两种加载方式

Objdll = ctypes.windll.LoadLibrary("dllpath")

Objdll = ctypes.WinDLL("dllpath")

cdecl调用约定:也有两种加载方式

Objdll = ctypes.cdll.LoadLibrary("dllpath")

Objdll = ctypes.CDLL("dllpath")

其实windll和cdll分别是WinDLL类和CDll类的对象。

2、调用dll中的方法

加载dll的时候会返回一个DLL对象(假设名字叫Objdll),利用该对象就可以调用dll中的方法。 e.g.如果dll中有个方法名字叫Add(注意如果经过stdcall声明的方法,如果不是用def文件声明的导出函数或者extern “C” 声明的话,编译器会对函数名进行修改,这个要注意。)

调用:nRet = Objdll.Add(12, 15) 即完成一次调用。

J. 怎样用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)

阅读全文

与pythondll相关的资料

热点内容
表格宏命令 浏览:992
肯德基app设定在哪里 浏览:470
苹果电脑文件夹怎么添加打印机 浏览:701
pythonswagger 浏览:235
作业打卡解压素材 浏览:159
pdf导入ibooks 浏览:577
xps文件转pdf 浏览:134
怎么样获得命令方块 浏览:899
安卓studio如何改主题 浏览:933
linux自动获取ip命令行 浏览:208
做设计做程序员适合的电脑 浏览:778
网站有源码和没有源码的区别 浏览:680
如何自学开发app 浏览:595
修电梯pdf 浏览:351
政务云是不是提供虚拟服务器 浏览:59
在哪里看每个app用了多长时间 浏览:637
学程序员要英语四级吗 浏览:133
java视频录制 浏览:758
口头指派式命令 浏览:474
php开发工程师面试题 浏览:954