您现在的位置是: 软件 > 开发者网络 > 程序方舟 > 开发专栏 > DELPHI开发 > 正文
·速成电脑精英(包分配)白领高薪一族从这里开始



-Java套接字编程(下)
-MediaStudio Pro 6.5教程
-三款卸载软件最新试用
-基于Visual C++的Winsock API研究

在Delphi和VC中创建和调用动态链接库
2001-10-31· ·丛蓉 李恺··yesky

上一页  1 2 3 4  下一页

  
  三、用VC创建DLL

  在VC中创建DLL,与Delphi中的创建过程相似,步骤如下:

  (1)新建一个DLL项目。MFC提供两种类型的动态链接库:常规型DLL、扩展型DLL。其中,常规型DLL适合于非MFC开发环境下采用支持DLL调用的程序设计语言开发的应用程序,扩展型DLL只能被MFC程序使用。

  (2)创建该DLL中的过程或函数,只需在程序中加入下列语句:

extern "C" _declspec(dllexport)
int yanzheng(CString input,char* zcm)
{
 AFX_MANAGE_STATE(AfxGetStaticModuleState());
 file://具体实现过程
}

  该函数的功能是验证注册码是否合法,其中yanzheng为函数名,int为函数返回值类型,()内为函数参数。编译通过后即可使用。

  四、 VC中DLL的调用

  在VC中调用动态链接库时,类似于Delphi中运行时调用DLL的方法。也要调用到Windows的API函数LoadLibrary,GetProcAddress等。此方法对于调用其它语言和VC编译的DLL均适用。

  假定DLL中包括一个函数:

int yanzheng(CString input,char* zcm)
  
  首先在欲调用DLL函数的cpp文件前部先声明函数指针,定义函数类型:

typedef int (* _YANZHENG)(CString,char* zcm);

  然后定义如下变量∶

HINSTANCE hLibrary;
_YANZHENG yanzheng;

  在调用DLL处加入如下语句进行DLL装载:

hLibrary=LoadLibrary("zcdll.dll");
yanzheng=(_YANZHENG)GetProcAddress(hLibrary,"yanzheng");
shuchu= (*yanzheng)(shuru,zcm);
FreeLibrary(hLibrary);

  五、 几点提示

  (1)如果用Delphi创建DLL时用到其它的form,则在DLL的输出函数中应包括form的create(创建)和free(释放),而且在显示该窗口时只能用showmodal过程,不能用show过程,在后面的例子中能详细看到。

  (2)如果Delphi创建的DLL中的函数或过程,用string类型作为参数输入或返回string类型,当用VC或其它程序调用时,经常会出错,反之亦然。为了解决这种情况,使不同程序之间在使用字符串类型时,接口更安全,建议使用pchar类型,而不是string类型。而且要在程序中加入内存管理,使用系统提供的sharemem单元。下面是一个实现将星期标识由数字转换成英文的例子:

uses
sharemem;
exports
makeitaday;
var
mydate:pchar;
function makeitaday(S:integer):pchar;stdcall;export;
implementation
function makeitaday(S:integer):pchar;stdcall;export;
var
thedate:array[0..20] of char;
begin
GetMem(mydate, 200);
if s=1 then thedate:='Sunday ';
file://……….
strpcopy(mydate,thedate);
makeitaday:=mydate;
end;

上一页  1 2 3 4  下一页

【责任编辑:方舟】
【发表评论】【关闭窗口】
■ 相关内容
 Delphi中多媒体组件使用解析
 用Delphi制作动态菜单
 DELPHI中自适应表单的实现
 Delphi中利用MSCOMM控件进行GPS数据采集
 Delphi中带缓存的数据更新技术
感谢 访问天极网,如果您觉得该文章涉及版权问题,请看这里!