怎样调用DLL啊?(动态调用)
STDENTRY_(PSID) OpenGisData( BYTE x, char *pNum, char *pUser, char *pPassWord )
是某个动态库的一个函数。该怎样调用啊?
问题点数:20、回复次数:7Top
1 楼bohut(●伯虎● )回复于 2005-05-23 10:32:56 得分 10
//第一步 定义函数指针就是你要调用的函数,参数必须一致,不然就内存泄露
typedef HANDLE (PASCAL * OPEN)(char *,int);
//第二步 定义本地函数
//一般前两步都在头文件里面声明
OPEN open;
//第三步 加载dll
HMODULE m_hLib;
m_hLib ::LoadLibrary"E:\\yewufuwu\\TERMINALDLL\\Debug\\TerminalDLL.dll");
//输入相应的路径
if(m_hLib == NULL )
{
MessageBox("动态连接库没有找到!!!","LoadLibrary",MB_OK);
return ;
}
//第四步
else
{
MessageBox("动态连接库成功打开...","LoadLibrary",MB_OK);
open=(OPEN)GetProcAddress(m_hLib, "OpenDevice");
}
//第五步
long handle =open("EF",1);Top
2 楼surstar(我要写个操作系统出来……)回复于 2005-05-23 11:00:43 得分 5
hInst=LoadLibrary("your.dll");
if(Inst!=NULL)
{
myfun=GetProcAddress(hInst, "你要的函数");
}
最后释放FreeLibrary,
myfun是一个函数指针,“你要的函数”的函数指针
下面是使用 myfun() // 就象你的函数一样使用~Top
3 楼shenchen8274(楚秦)回复于 2005-05-23 11:06:03 得分 0
HANDLE是什么啊Top
4 楼shenchen8274(楚秦)回复于 2005-05-23 11:06:45 得分 0
PASCAL又是什么Top
5 楼shenchen8274(楚秦)回复于 2005-05-23 11:07:14 得分 0
关键字吗Top
6 楼slience(疏星朗月)回复于 2005-05-23 13:21:25 得分 5
HANDLE是存放DLL的句柄
PASCAL是调用约定,即函数的参数自右向左通过栈传递!Top
7 楼shenchen8274(楚秦)回复于 2005-05-25 09:40:24 得分 0
谢谢各位大哥!!!!Top




