我在调用dll时遇到一些问题,我的部分代码如下:
typedef int (*UsrFun)(DXCHAN *pState,int nChan);
UsrFun pUsrFun,pUsrFunPara;
hinstDLL = LoadLibrary((LPCTSTR) "CUserFunInt.dll");
pUsrFun = (UsrFun)GetProcAddress(hinstDLL, “MyFun”);
if(pUsrFun==NULL)
return;
else
{
pUsrFunPara=(UsrFun)GetProcAddress (hinstDLL,"PutParaFromState");
if(pUsrFunPara==NULL)
return;
else
pUsrFunPara(pState,pState->m_nChanNo); }
/////////问题来了,程序到这里就返回了,不往下执行了~_~
pUsrFun(pState,pState->m_nChanNo);
FreeLibrary(hinstDLL);
}这是什么原因,调用dll是不是只能调用一次呢?还是在dll中对返回值有什么要求?请大家指教!
typedef int (*UsrFun)(DXCHAN *pState,int nChan);
UsrFun pUsrFun,pUsrFunPara;
hinstDLL = LoadLibrary((LPCTSTR) "CUserFunInt.dll");
pUsrFun = (UsrFun)GetProcAddress(hinstDLL, “MyFun”);
if(pUsrFun==NULL)
return;
else
{
pUsrFunPara=(UsrFun)GetProcAddress (hinstDLL,"PutParaFromState");
if(pUsrFunPara==NULL)
return;
else
pUsrFunPara(pState,pState->m_nChanNo); }
/////////问题来了,程序到这里就返回了,不往下执行了~_~
pUsrFun(pState,pState->m_nChanNo);
FreeLibrary(hinstDLL);
}这是什么原因,调用dll是不是只能调用一次呢?还是在dll中对返回值有什么要求?请大家指教!
pUsrFunPara=(UsrFun)GetProcAddress (hinstDLL,"PutParaFromState");
if(!pUsrFunPara)
pUsrFunPara(pState,pState->m_nChanNo);
else
return;
else
return;
/////////问题来了,程序到这里就返回了,不往下执行了~_~
pUsrFun(pState,pState->m_nChanNo);
FreeLibrary(hinstDLL);
}感觉你代码习惯不太好~~
多谢,我会注意书写规范的:~ —~!!!
我在GetProcAddress调用时,是能够得到值的,应该是其他地方有问题!!!
只是感觉他写得看着不舒服~
对了~我想起来了~
LoadLibrary只能调用一次~
下次调用需要FreeLibrary~
然后再LoadLibary~我记得是这样~
不知对不对~