python调用Delphi写的Dll
2013-03-15 19:03
721 查看
Delphi单元如下(输出hello.dll):
python中调用如下:
运行Python,输出如下:
好了,我们可以让python完成部分功能在Delphi中调用,也可以用Delphi完成部分功能在Python中调用。
以上程序在Delphi XE2及Python3.2中调试通过。
unit hellofun; interface function getint():integer;stdcall; function sayhello(var sname:PAnsiChar):PAnsiChar;stdcall; implementation function getint():integer;stdcall; begin result:=888; end; function sayhello(var sname:PAnsiChar):PAnsiChar;stdcall; begin sname:='ok!'; result:='hello,garfield !'; end; end.
library hello; { Important note about DLL memory management: ShareMem must be the first unit in your library's USES clause AND your project's (select Project-View Source) USES clause if your DLL exports any procedures or functions that pass strings as parameters or function results. This applies to all strings passed to and from your DLL--even those that are nested in records and classes. ShareMem is the interface unit to the BORLNDMM.DLL shared memory manager, which must be deployed along with your DLL. To avoid using BORLNDMM.DLL, pass string information using PChar or ShortString parameters. } uses System.SysUtils, System.Classes, hellofun in 'hellofun.pas'; {$R *.res} exports getint, sayhello; begin end.
python中调用如下:
import ctypes def main(): dll=ctypes.windll.LoadLibrary("hello.dll") ri=dll.getint() print(ri) s=ctypes.c_char_p() rs=ctypes.c_char_p() rs=dll.sayhello(ctypes.byref(s)) print(s) print(ctypes.c_char_p(rs)) if __name__ == '__main__': main()
运行Python,输出如下:
>>> 888 c_char_p(b'ok!') c_char_p(b'hello,garfield !') >>>
好了,我们可以让python完成部分功能在Delphi中调用,也可以用Delphi完成部分功能在Python中调用。
以上程序在Delphi XE2及Python3.2中调试通过。
相关文章推荐
- python调用Delphi写的Dll代码示例
- Python调用C++的DLL
- C#调用Delphi的dll之详解
- Delphi 中的DLL 封装和调用对象技术
- Python调用C的DLL和VC调用有什么区别?
- C# 如何调用 Delphi 编写的 DLL 方法
- Java调用Delphi DLL(通过C++调用和直接调用两种方式)
- 一个DELPHI程序要调用DLL,而DLL中的函数名,参数个数,参数类型为不定
- Delphi调用DLL中的接口
- Delphi调用C写的dll
- delphi调用DLL
- Delphi程序调用C#.Net编译的DLL并打开窗体(详解)
- Python 通过ctypes调用 ICTCLAS3.0.DLL
- Delphi中DLL的建立和调用
- Delphi 调用dll中的窗体
- Python调用windows下DLL详解 - ctypes库的使用
- Delphi 中的DLL 封装和调用对象技术
- C#调用DELPHI的DLL时传递string数组
- VS中调用DLL进行测试;vs进行远程调试;python中进行debug调试需要的文件
- DELPHI中调用DLL的方法和一些注意事项和技巧