python调用Delphi写的Dll代码示例
2017-12-05 09:05
826 查看
首先看下Delphi单元文件基本结构:
unit Unit1; //单元文件名 interface //这是接口关键字,用它来标识文件所调用的单元文件 uses //程序用到的公共单元 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs; type //这里定义了程序所用的组件,一些类,以及组件所对应的过程、事件 TForm1 = class(TForm) private //定义私有变量和私有过程 { Private declarations } public //定义公共变量和公共过程 { Public declarations } end; var //定义程序使用的公共变量 Form1: TForm1; implementation //程序代码实现部分 {$R *.dfm} end.
Delphi单元如下(输出hello.dll):
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中调用。
以上程序在DelphiXE2及Python3.2中调试通过。
总结
以上就是本文关于python调用Delphi写的Dll代码示例的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!
您可能感兴趣的文章:
相关文章推荐
- Delphi中如何把函数代码调出主程序,写到“DLL”中并调用
- Delphi调用C++写的dll示例
- DELPHI中动态调用DLL的载入片断代码
- C#调用Delphi Dll返回字符串的示例
- python调用 C/C++ 代码示例
- C#调用Delphi Dll返回字符串的示例(使用Move才能拷贝字符串)
- python3调用R的示例代码
- delphi实现调用dll中的窗体 代码
- symbian中调用dll的示例代码
- Python脚本调用C#代码数据交互示例(hello world)
- C# 调用 Delphi Dll链接库方法及示例
- 调用外部DLL,如:DelphiC++Java的DLL的调用方法,给出代码片段?
- delphi中用代码实现注册Ocx和Dll(有点怪异,使用CallWindowProc来调用指定函数DllRegisterServer)
- C# 调用 Delphi Dll链接库方法及示例
- linux平台下C语言调用python代码示例
- python调用Delphi写的Dll
- C调用Python函数相关代码示例剖析
- python3:调用阿里云小蜜代码示例
- eoLinker-API_Shop_短信服务接口-调用示例代码,支持PHP、Python、Java等语言
- C# 调用Delphi dll 实例代码