用delphi做GUI而用C++来实现行不行? 现在需要用delphi做界面。而我的实现是用的C++,但不知道这样该如何结合呢?比如我在界面上做一些操作但它用的是object pascal的语言,用dll?谁能给我举个简单的例子行吗?当然谁能给出更详细的参考资料就更好。希望大家帮忙。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 核心算法用c++写成com组件,或者dll,然后delphi调用 转贴: 调用DLL有两种方法,一种是在应用程序装载时调用,另一种是在应用程序运行时调用。首先介绍装载时DLL的调用: (1)装载时调用DLL 在调用DLL的Pas文件中,对DLL函数进行外部声明,声明应位于Implementation的Uses语句后,形式如下: Implementation Uses Dialogs; Function Name(argment):Boolean;far;External 'CallName'; 其中External关键字后面的引号内的字串是DLL的文件名。声明以后即可在Pas文件任何地方引用DLL函数。 装载时调用DLL的优点是速度较快,程序间也可共享代码。 (2)运行时调用DLL DLL的另一种调用方法是在运行时调用。要调用到Windows的API函数:LoadLibrary,GetProcAddress等。主要用于调用DELPHI和其它语言,特别是C++编译的DLL。 假定你的DLL包括一个函数: Function MyFunc(aparam:word):string;export; 首先在程序Type类型声明处加入一句: Type TMyfunc = function(aparam:word):string; 此句的作用如同C++中声明的函数指针。 然后定义如下变量∶ Var aptr:TFarproc; lhnd:THandle; s:string; 其中Aptr,lhnd两变量声明必须有,s是DLL函数返回值,视情况而定。 在调用DLL处加入如下语句进行DLL装载: lhnd:=Loadlibrary('路径:DLL文件名');{如lhnd:=Loadlibrary('c:\aa\bb.dll'); aptr:=GetprocAddress(lhnd,'Myfunc'); 下面可直接调用DLL了: s:=TMyfunc(bptr)(60);{根据函数填相应的变量参数} 调用完以后,用FreeLibrary释放DLL占用的内存: FreeLibrary(lhnd); 不知道如何在DELPHI中操作C++中类成员函数或共享类对象.不知道上面几位老大有没有把C++做成DLL和用DELPHI来调用的例子或类似资料呢?因为我对DELPHI不太熟而C++熟点,所以具体的实现想用C++但又喜欢DELPHI而不喜欢VC所以想用DELPHI来做界面.毕竟一个应用程序不提供GUI似乎不太友好.先谢谢theone_jxm() ,研究一下先. 一楼的说的对,核心的用C++写成DLL,然后使用DELPHI调用~! 用C++做成dll.然后用Delphi调用。我说一下我的看法:我觉得你这样做不好,直接用C++写个界面就完了。不用这样个"取长补短". 一般情况下确实没这个必要,要么全部用OBJECT PASCAL,要么全部用C++,如果是玩玩,做做技术实验,倒可以,如果真正在项目中这样做,是自讨苦吃,没有多大意思。 以前有个人问 “用delphi做GUI,java写代码”哈哈,跟你这个差不多那么,请用C++BUILDER吧,哈哈 楼主,你不用BCB真是天大的错误!天啦,为什么会有为问这种问题呀BCB:用C/C++语言的DELPHIDELPHI:用Object Pascal语言的BCB 楼主,你不用BCB真是天大的错误! to: lili1(离奇)直接用C++写个界面就完了。不用这样个"取长补短".//用C++如何写界面?搞个图形库?我觉得有专门的控件做起来更方便.//如果用图形库的话也不是一天两天能搞好的事.因为界面只是一个操作用户接口.//我重要的还是要在乎实现的. to: nyf1220(我是党员) 以前有个人问 “用delphi做GUI,java写代码”哈哈,跟你这个差不多那么,请用C++BUILDER吧,哈哈//不太清楚DELPHI和BCB(最新用的是X吧?)有什么不同?好像X不是用的VCL吧?//感觉BCB并没有DELPHI那么RAD(高效吧?)DELPHI好像也比较简单(当然是指在普通应用上如做个界面哪)不知道BCB如何.我试试BCB看看如何. 底层涉及到大量api调用的部分用c++来写成dll或者com。然后主体部分用delphi调用dll。不过这样的运行效率肯定不高,两种语言的数据类型又不完全一致,不到万不得已别这样 有何非要用C++实现,而delphi实现不了我想楼主可能C++比较熟悉,但用c++实现界面又太繁 to:zjqyb(风清扬*任它溺水三千,我只取一瓢饮*) 的确如你所说,我对C++熟一点而对DELPHI不太熟而BCB更是没有摸过。不过对DELPHI还是比对BCB熟一点。C++做界面很麻烦。你说用VCL搞一搞多方便是吧。正好手头有本delphi6开发人员指南所以想用delphi.感觉bcb效率不怎么高。那个代码提示好慢的说.现在要做一个东西,用C++实现但界面得用BCB或delphi做。时间不多只有半年。我现在一点bcb都不会用不知道怎么办。。 你有C++的功底,熟悉object pascal的语法应该比较快,它的好多实现融合了C++的思想学一学应该没有坏处 看你的需求!做成dll的好处是以后其他程序也可以调用,不一定非得你得那个程序来调用! Webbrowser 无法播放Flash,Access violation in Flash.ocx 有做过MSN,QQ 等IM软件的 兄弟么?进来看看呀 c/s转b/s的问题 请问下这个是什么错误啊? 请问一下,有谁知道这个问题,一解决马上揭贴。 关于帮助系统的制作问题 ■■■如何向其他程序的窗口发送组合键?■■■ 打扰大家:我的GF过两天就要从广州回来了,呆个两三天,我该怎么表现才会让更她不想回去呢? 动态创建表的方法? 也许没有答案,只是想跟大家讨论一下! 什么时候才能访问窗口控件的handle属性? 求报表动态设置的源码
首先介绍装载时DLL的调用: (1)装载时调用DLL 在调用DLL的Pas文件中,对DLL函数进行外部声明,
声明应位于Implementation的Uses语句后,形式如下: Implementation Uses Dialogs; Function Name(argment):Boolean;far;External 'CallName'; 其中External关键字后面的引号内的字串是DLL的文件名。
声明以后即可在Pas文件任何地方引用DLL函数。 装载时调用DLL的优点是速度较快,程序间也可共享代码。 (2)运行时调用DLL DLL的另一种调用方法是在运行时调用。
要调用到Windows的API函数:LoadLibrary,GetProcAddress等。
主要用于调用DELPHI和其它语言,特别是C++编译的DLL。 假定你的DLL包括一个函数: Function MyFunc(aparam:word):string;export; 首先在程序Type类型声明处加入一句: Type
TMyfunc = function(aparam:word):string; 此句的作用如同C++中声明的函数指针。 然后定义如下变量∶ Var
aptr:TFarproc;
lhnd:THandle;
s:string; 其中Aptr,lhnd两变量声明必须有,s是DLL函数返回值,视情况而定。 在调用DLL处加入如下语句进行DLL装载:
lhnd:=Loadlibrary('路径:DLL文件名');{如lhnd:=Loadlibrary('c:\aa\bb.dll');
aptr:=GetprocAddress(lhnd,'Myfunc'); 下面可直接调用DLL了:
s:=TMyfunc(bptr)(60);{根据函数填相应的变量参数} 调用完以后,用FreeLibrary释放DLL占用的内存:
FreeLibrary(lhnd);
不知道上面几位老大有没有把C++做成DLL和用DELPHI来调用的例子或类似资料呢?
因为我对DELPHI不太熟而C++熟点,所以具体的实现想用C++但又喜欢DELPHI而不喜欢VC所以想用DELPHI来做界面.毕竟一个应用程序不提供GUI似乎不太友好.
先谢谢theone_jxm() ,研究一下先.
我说一下我的看法:我觉得你这样做不好,
直接用C++写个界面就完了。不用这样个"取长补短".
如果是玩玩,做做技术实验,倒可以,如果真正在项目中这样做,是自讨苦吃,
没有多大意思。
天啦,为什么会有为问这种问题呀
BCB:用C/C++语言的DELPHI
DELPHI:用Object Pascal语言的BCB
直接用C++写个界面就完了。不用这样个"取长补短".
//用C++如何写界面?搞个图形库?我觉得有专门的控件做起来更方便.
//如果用图形库的话也不是一天两天能搞好的事.因为界面只是一个操作用户接口.
//我重要的还是要在乎实现的.
to: nyf1220(我是党员)
以前有个人问 “用delphi做GUI,java写代码”哈哈,跟你这个差不多
那么,请用C++BUILDER吧,哈哈
//不太清楚DELPHI和BCB(最新用的是X吧?)有什么不同?好像X不是用的VCL吧?
//感觉BCB并没有DELPHI那么RAD(高效吧?)DELPHI好像也比较简单(当然是指在普通应用上如做个界面哪)不知道BCB如何.我试试BCB看看如何.
我想楼主可能C++比较熟悉,但用c++实现界面又太繁
不过对DELPHI还是比对BCB熟一点。
C++做界面很麻烦。你说用VCL搞一搞多方便是吧。正好手头有本delphi6开发人员指南所以想用delphi.
感觉bcb效率不怎么高。那个代码提示好慢的说.现在要做一个东西,用C++实现但界面得用BCB或delphi做。时间不多只有半年。我现在一点bcb都不会用不知道怎么办。。
学一学应该没有坏处