引用dll中的函数时,用loadlibrary动态加载,指明绝对路径,用完了再freelibrary不知有否帮助
解决方案 »
- 为何在运行m_pRecordset=cnn->Execute((_bstr_t)bstrSQL,NULL,adCmdText);之后无法调用m_pRecordset->Close();
- PC上如何编程搜索蓝牙设备?
- 100分赠予帮我解决问题的人,分不够再加
- 动态改变标题栏(SDK)名称
- CORBA ORBIT
- 越学越不会,什么是thunk?
- API钩子钩TextOutA()
- 鼠标的图标问题!LoadStandardCursor()
- 谁帮我(和所有vc初学者)介绍几本好书???(没分?)
- 怎样能够改变CFormView的背景颜色
- 一秒钟问题急救,将字符转换成十六进制与将16进制转换为字符的函数?
- 马上给30分:帮我查一下"CCreatContext",我的MSDN查不到.
与你这个有类似的地方。{
//Load Dll
HMODULE hModule1,hModule2;
hModule1 = LoadLibrary("test01.dll");
hModule2 = LoadLibrary("test02.dll");
if(!(hModule1&&hModule2))
{
AfxMessageBox("Load Dll Error!");
return;
} FUNCTYPE *pFunc1,*pFunc2;
long n1,n2;
long x ;
pFunc1 = (FUNCTYPE*)GetProcAddress(hModule1,"TestProc");
pFunc2 = (FUNCTYPE*)GetProcAddress(hModule2,"TestProc");
if(!(pFunc1&&pFunc2))
{
//Free Dll
::FreeLibrary(hModule1);
::FreeLibrary(hModule2);
AfxMessageBox("Get Process Address Error!");
return;
}
x =999;
n1 = (*pFunc1)(x);
n2 = (*pFunc2)(x); char szOut[1024];
memset(szOut,0,1024);
sprintf(szOut,"%d,%d",n1,n2);
AfxMessageBox(szOut); //Free Dll
::FreeLibrary(hModule1);
::FreeLibrary(hModule2);
}
extern "C" _declspec(dllexport) long TestProc(long n);
非常感谢你的指导,我用不是不同dll中函数名相同的情况,而是我们编写的dll文件名与系统中的一个dll文件名相同的情况,而且我这做了这后导致了系统dll中的一部分函数不好用了,并不是全部不好用。