最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python調(diào)用Delphi寫的Dll代碼示例

 更新時間:2017年12月05日 09:05:01   作者:garfieldtom  
這篇文章主要介紹了python調(diào)用Delphi寫的Dll代碼示例,具有一定參考價值,需要的朋友可以了解下。

首先看下Delphi單元文件基本結(jié)構(gòu):

unit Unit1;  //單元文件名 
interface   //這是接口關(guān)鍵字,用它來標(biāo)識文件所調(diào)用的單元文件 
uses     //程序用到的公共單元 
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs; 

type     //這里定義了程序所用的組件,一些類,以及組件所對應(yīng)的過程、事件 
TForm1 = class(TForm) 
private   //定義私有變量和私有過程 
  { Private declarations }
public   //定義公共變量和公共過程 
  { Public declarations }
end; 
  
var      //定義程序使用的公共變量 
Form1: TForm1; 

implementation //程序代碼實現(xiàn)部分 

{$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中調(diào)用如下:

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中調(diào)用,也可以用Delphi完成部分功能在Python中調(diào)用。

以上程序在DelphiXE2及Python3.2中調(diào)試通過。

總結(jié)

以上就是本文關(guān)于python調(diào)用Delphi寫的Dll代碼示例的全部內(nèi)容,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關(guān)專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!

相關(guān)文章

最新評論

灵寿县| 习水县| 拉萨市| 达日县| 东兴市| 北辰区| 兴文县| 宽城| 永昌县| 甘孜县| 林周县| 卢湾区| 铁岭市| 通许县| 巴楚县| 山阳县| 南康市| 蛟河市| 大埔县| 信阳市| 福海县| 大田县| 朔州市| 内乡县| 六安市| 临高县| 江津市| 广东省| 阿荣旗| 特克斯县| 武宁县| 松江区| 安顺市| 荣昌县| 九龙县| 新宁县| 唐山市| 临朐县| 宁强县| 芜湖市| 达拉特旗|