VC和Delphi的混合编程

本文介绍如何通过动态链接库(DLL)的方式让VC与Delphi完美结合,以发挥两者的优势。具体步骤包括使用Delphi创建DLL并导出函数,然后在VC中动态加载该DLL并调用其函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    VC的MFC大框架非常的完美,开发程序功能强大,几乎没有他做不了的事。但经常使用他的朋友们,一定对他的控件深有感触,控件太少,功能不够,不灵活,界面不漂亮。而DELPHI的控件丰富,功能强大,可扩展性强。如果在开发程序时,主程序用VC开发,界面操作利用delphi强大的控件,真是使VC如虎添翼。事半功倍。如何使VC和delphi完美的结合呢?答案是:利用动态链接库(DLL)。故本文提出的用delphi编制DLL,由VC来调用。使两者完美结合。

一。delphi的DLL的实现。

1.首先用delphi的“DLL Wizard”生成DLL的工程Test。添加一个form,根据您的需要在对话框上添加几个控件。在工程文件中添加DlgShow过程,用于弹出对话框。工程源代码如下:

//Test工程文件源代码

library Test; uses   SysUtils,   Classes,  

Unit1 in 'Unit1.pas' {Form1};

procedure DlgShow;stdcall;export;

begin    

      form1 := TForm1.Create(nil);    

      form1.ShowModal;    

      form1.Free;

end;

exports     DlgShow Index 1name 'DlgShow';

begin

end.

注意:DlgShow文件声明时后面必须带stdcall和export,否则VC将不能正常调用。在exports的后面添加输出文件的声明, 您可以指定索引号,并重新命名,如果有多个函数,之间要用“,”分开。编译生成Test.dll。

二。VC编程调用DLL

对DLL的调用,本文中是用动态加载的方式。用VC6.0生成一个基于对话框的工程。在对话框上添加一个按钮,在按钮的单击消息函数中,加入如下代码:

void CTestDlg::OnButton1()

{

        typedef void (*fun)(void);  

        fun f;  

        HINSTANCE hDLL = LoadLibrary("Test.dll"); 

        if ( hDLL!=NULL )  

        {   

              f = (fun)GetProcAddress(hDLL, "DlgShow");   

              f();   

              FreeLibrary(hDLL);   

        }

}

将上面生成的Test.dll手动拷贝到新工程的DEBUG目录下,编译执行VC程序,在对话框中,点击按钮,可以看到我们在DELPHI中编辑的对话框界面,测试各项功能,没有问题,大功告成。 注意:首先在函数的开始声明了一个函数的指针,然后加载Test.dll,找到函数的地址,并赋给f,执行,最后卸载Test.dll,完成DLL的调用。读者也可以扩展成静态的加载方式。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值