电脑爱好者,提供IT资讯信息及各类编程知识文章介绍,欢迎大家来本站学习电脑知识。 最近更新 | 联系我们 RSS订阅本站最新文章
电脑爱好者
站内搜索: 
当前位置:首页>> delphi技术>>Dephi 之DLL技巧汇集(3):

Dephi 之DLL技巧汇集(3)

来源:远方网络 | 2005-12-31 9:31:48 | (有1926人读过)

2.Delphi共享C++对象

通常,程序员会考虑使用Delphi来编制用户界面,所以Delphi代码调用C++代码似乎显得更加实际些。其实,Delphi共享C++对象的实现方法与上述C++共享Delphi对象非常相似。用同样的共享接口与实现接口说明方法来定义C++的类:

class STestObjedt {

virtual void Proc1(int x)=0;

virtual char *Func1(int x)=0;

};

class TTestObjedt :public STestObject {

void Proc1(int x);

char *Func1(int x);

void Proc2();

int Func2();

void Free();

};

然后实现这些方法。同样地,C++对象需要一个与之对应的制造函数,这里以DLL为例

STestObject stdcall export *CreateTestObject() {

return (STestObject *) new TTestObject.Create;

}

Delphi代码可以通过调用制造函数CreateTestObject,很容易地在C++中创建实例,获得指向该实例的指针值,并以这个指针值来调用对象中的共享方法。当然,在进行完该对象的相关处理后,千万不要忘了调用Free释放占用的空间。

张维

摘要:Delphi以其独特的面向控件的开发方式、强大的数据库功能以及快速的编译技术,使得它自发布起即格外引人注意。随着Delphi 5提供丰富的Internet应用,Delphi日益成为最重要的软件开发工具之一,它吸引了许多原Visual Basic、Foxpro、dBase甚至C++的程序员,而这些程序员使用Delphi时需要解决的一个重要问题就是怎样利用他们原有的代码。本文将介绍Delphi与C++程序集成的方法,包括:

Delphi与C++之间函数的共享;

代码的静态链接和动态链接;

对象的共享。

函数的共享

在Delphi中调用C++函数与C++调用Delphi函数相当直接,需要注意的是,Delphi 1默认的函数调用方式是Pascal方式,Delphi 4、Delphi 5的默认方式则是优化的cdecl调用方式,即register方式。要在C++与Delphi程序之间实现函数共享,除非有充分的原因,否则应该使用标准系统调用方式,即stdcall方式。为了使C++编译器不将函数标记为"mang led",使Delphi编译器误认为函数是采用cdecl调用方式,应该在C++代码中,以extern "C "说明被共享的函数,如下例所示:

原型说明:

在C++中:

extern "C" int _stdcall TestFunc();

在Delphi中:

function TestFunc:integer; stdcall;

调用语法:

在C++中:

int i=TestFunc();

在Delphi中:

var i:integer;



begin



i:=TestFunc;



end;

共享函数的参数必须是两种语言都支持的变量类

参考文章:DELPHI 中动态链接库的使用 http://blog.csdn.net/feifei1018/admin/EditPosts.aspx



delphi技术热门文章排行
网站赞助商
购买此位置

 

关于我们 | 网站地图 | 文档一览 | 友情链接| 联系我们

Copyright © 2003-2024 电脑爱好者 版权所有 备案号:鲁ICP备09059398号