[教学] 如何用 Delphi6.0 call vc++6.0 写的 DLL 档

Home Home
引用 | 编辑 mainchen
2002-10-29 15:52
楼主
推文 x0
此为转贴资料
肖运勇

Delphi以其独特的面向控制项的开发方式、强大的资料库功能、快速的编译技术以及简单易学的编程特性,使得它自发布之日起即格外引人注目,许多程式师也因此将它作?首选的开发工具。然而,Delphi在科学计算、低端编程等方面的功能不如VC++。VC++功能强大、齐全,但是整个系统比较复杂、庞大,尤其对于初学者来说比较难学,其用户介面的开发远不如Delphi那样方便、快捷。那?,我们能否将两者的优点结合起来呢?答案是肯定的!具体做法是:将涉及到比较低级的操作、计算等方面的程式用VC++写成函数放在动态连结程式库中,而涉及到介面及与用户交互的编程则用Delphi来实现,最后只需在Delphi中调用VC++编写的动态连结程式库即可。
一、动态连结程式库简介
动态连结程式库(DLL,即 “Dynamic-Link Library”)是一个能够被应用程式和其他的DLL调用的过程和函数的集合体,它里面包含的是公共代码或资源。DLL是Windows的基石,所有的Win32 API函数都包含在DLL中。
使用DLL有许多优点:
1、一个DLL可以提供给不同的程式使用,如果有多个程式使用相同的DLL,也只需将DLL在记忆体中装载一次,这样就节省了记忆体开销。
2、DLL可以使我们的编程更加模组化,将功能相对独立的模组编成一个动态连结程式库,这样改动程式时不需将整个程式重新编译,只需重新编译所改动的模组。
3、使用了DLL元件包可以大大减小可执行文件的规模。
4、对于一个大型的、不断更新的应用程式,可以将许多重复的功能写成DLL,用主程序调用,这样既减少了开发的工作量,又提高了访问速度。
5、DLL独立于编程语言,大多数WINDOWS编程环境都允许主程序调用DLL中的函数。即可以用VC++、VB、PowerBuilder、Delphi、组合语言等建立DLL,然后在不同语言编制的应用程式中调用它。这样就给多人使用不同的编程语言开发专案提供了极大的方便。

二、在Delphi中调用VC++创建的动态连结程式库的实例
(一)实验环 ..

访客只能看到部份内容,免费 加入会员



献花 x0
引用 | 编辑 AndersenC
2003-04-09 11:53
1楼
  
大大辛苦你了,
小弟有点小小意见不知道对不对,
大家参考一下。

大大文章中提到制作 MFC DLL 的部分,
有点错误,
VC++中若没有作设定,
预设的 Function Call Conversion 是 __cdecl,
所以 Export 的 API 会是 __cdecl 不是 __stdcall,
这样会造成 Delphi 的程式呼叫时,
参数传递造成错误,
故而必须在 MFC DLL 的程式宣告修正如下:
extern "C" _declspec(dllexport) int __stdcall Min1(int x,int y,int z);
extern "C" _declspec(dllexport) int __stdcall Max1(int x,int y,int z);

请多多指教 ^_^ ...

献花 x0