VC6动态调用DELPHI DLL
2005-08-25 10:17
393 查看
最近由于一些业务接口问题,和对方公司一个很牛的Man一起搞业务移植,他DELPHI偶VC,最后商订由他搞底层协议封装成DLL,我来调用,他DLL文件中声明为STDCALL,调用的方法和掉VC自己的DLL,有些不同。
步骤:
1.用VC6的工具Depends打开DLL,看DLL其中的函数信息,原型,接入点等。
2.声明一个指向DLL函数其中的函数指针。
如:
typedef int(*tMsgBox)(); //声明MSGBOX的函数指针
3.声明并取加载的动态链接库的句柄
HINSTANCE hDLL;
hDLL=LoadLibrary("d:\\linux\\aaa\\TestDll.dll"); //加载动态链接库MyDll.dll文件;
4.实例化函数指针
tMsgBox pMsgBox;
5.把已经实例化的函数指针指向DLL中的函数
pMsgBox = GetProcAddress(hDLL,"MsgBox"); //GetProcAddress中的第二个参数可以是函数在DLL中的序号
6.调用函数
pMsgBox();
7.从内存中卸载动态库
FreeLibrary(hDLL);
到这里动态调用就完成了,DLL库里函数多的话按序号调用可能会出问题,还是应该用函数名来调用。
步骤:
1.用VC6的工具Depends打开DLL,看DLL其中的函数信息,原型,接入点等。
2.声明一个指向DLL函数其中的函数指针。
如:
typedef int(*tMsgBox)(); //声明MSGBOX的函数指针
3.声明并取加载的动态链接库的句柄
HINSTANCE hDLL;
hDLL=LoadLibrary("d:\\linux\\aaa\\TestDll.dll"); //加载动态链接库MyDll.dll文件;
4.实例化函数指针
tMsgBox pMsgBox;
5.把已经实例化的函数指针指向DLL中的函数
pMsgBox = GetProcAddress(hDLL,"MsgBox"); //GetProcAddress中的第二个参数可以是函数在DLL中的序号
6.调用函数
pMsgBox();
7.从内存中卸载动态库
FreeLibrary(hDLL);
到这里动态调用就完成了,DLL库里函数多的话按序号调用可能会出问题,还是应该用函数名来调用。
相关文章推荐
- Delphi 类库(DLL)动态调用与静态调用示例讲解
- VC调用Delphi制作的动态链接库如何互相传递字符串
- Delphi 动态与静态调用DLL
- 请问Delphi调用VC写的dll,有传入和传出参数都是unsigned char*运行中有有关问题
- VC中使用动态链接库DLL:静态调用和动态调用
- Delphi动态调用C++写的DLL
- Delphi 调用VC生成的DLL
- DELPHI调用VC写的DLL经验
- BCB2009 动态调用VC生成的DLL
- Delphi 调用VC的DLL
- 关于C#动态调用VC Dll的方法(转)
- Delphi调用VC编译的DLL
- VC调用Delphi的DLL时遇到的问题及解决
- VC动态调用DLL的调试方法
- VC调用Delphi制作的动态链接库如何互相传递字符串
- Delphi 调用VC的DLL
- [VC]MFC程序动态调用plugin DLL的方式
- VC动态调用DLL
- VC调用Delphi制作的动态链接库如何互相传递字符串
- VC++ .NET 动态加载DLL,使用反射方式Invoke委托调用