使用DLL2LIB将VC的DLL还原成LIB后,在Delphi中可以使用,来扩充DLL的功能呢?
解决方案 »
- mainmenu与poupmenu的区别
- 如何把服务器上的数据库中的word读区到客户端的olecontainer中??
- 关于窗体继承的问题?
- 100分!求Delphi 4 编程技术内幕 电子版(电子工业出版社)!
- delphi5.0的程序如何转到delphi6.0?
- sos:15天内作一个通用报表,大家都给点建议,有用就有分!!
- 客户端电脑如何通过三层交换机访问到服务器的SQLSERVER2005的数据库?
- 不好意思,有没有哪位仁兄告诉我应该怎样把数据库中的某个数据显示在一个treeview中呢?
- 怎么把一个Delphi的Exe文件放在服务器上定时运行?
- java 压缩的Gzip字符串delphi如何解压?我这里总是提示data error
- 请问一个关于显示图片的问题!立马给分
- 我要写个安装程序,如何使用进度条?
那我要扩充一个DLL的功能,Delphi下应该如何实现。
1、在VC++的.cpp文件中说明输出函数的名字、类型、调用方式、定义函数执行体:
extern "C" __declspec(dllexport) void VCvoidfunction(......)
{
.......
return;
} extern "C" __declspec(dllexport) DWORD VCdwordfunction(......)
{
.......
return ....;
} 2、在Delphi中说明,假定做一个单独的引入单元:
1)说明函数类型:
Type TVCvoidfunction=Function(......); Cdecl; //函数类型
Type TVCdwordfunction=Function(......); Cdecl; //函数类型 2)定义函数变量:
Var VCvoidfunction: TVCvoidfunction;
VCdwordfunction: TVCdwordfunction; 3、在Delphi程序中首先动态连接DLL: DLL_Handle:=LoadLibrary(PChar(DLLPath));
DLL_Handle>0 Then //若加载成功,
Begin //则依次定位函数
Try
@VCvoidfunction :=GetProcAddress(DLL_Handle,'VCvoidfunction');
@VCdwordfunction:=GetProcAddress(DLL_Handle,'VCdwordfunction);
Except
FreeLibrary(DLL_Handle);
End
End
4、在Delphi程序中调用VC的DLL中函数:
直接使用函数名,按Delphi的要求使用。
注意,VC参数中的&对应Delphi的Var。