我做了一个dll,用隐式链接的方法调用dll没有问题,可是用动态加载编译也无错误,可是一运行就出现非法操作或者致命错误,请各位大虾帮我看下!!!以下是在一个按钮点击响应函数中的代码void CYYDllTestDlg::OnButton1()
{
// TODO: Add your control notification handler code here //ShowDlg(); //隐式链接DLL,没有问题!!!
//以下是动态加载dll的代码
typedef void (*AddrDlgShow)();
HINSTANCE hInst;
hInst=LoadLibrary("YYDll.dll");
AddrDlgShow dlgShow;
if(hInst!=NULL)
{
dlgShow=(AddrDlgShow)GetProcAddress(hInst,"ShowDlg");
(*dlgShow)();
}
else
{
AfxMessageBox("加载DLL失败!");
}
FreeLibrary(hInst);
}
{
// TODO: Add your control notification handler code here //ShowDlg(); //隐式链接DLL,没有问题!!!
//以下是动态加载dll的代码
typedef void (*AddrDlgShow)();
HINSTANCE hInst;
hInst=LoadLibrary("YYDll.dll");
AddrDlgShow dlgShow;
if(hInst!=NULL)
{
dlgShow=(AddrDlgShow)GetProcAddress(hInst,"ShowDlg");
(*dlgShow)();
}
else
{
AfxMessageBox("加载DLL失败!");
}
FreeLibrary(hInst);
}
解决方案 »
- CString怎么输入"?
- 如何调用void CMainFrame::OnlineUser( void * package )里面的内容?
- 如何得到一个陌生的COM组件(以Dll文件提供)上的接口?
- 如何将一个CFrameWnd框架放到activex中
- ado向后台数据库存储大文件时,超过20M就不行了
- 请问高手们!有关VC的网络的编程是用哪些东西?WINSOCK,ISAPI或者其他的!
- 怎样才能准确的知道一台电脑的硬件配置?在线等!谢谢!
- 如何实现右下角动画弹出窗口的功能?
- 怎样才能学好VC++?
- ★★★简单问题:帮帮忙
- 求正版Visual studio 2005
- VC中如何调用.bat文件?
我这样也试过的,结果一样的,这个(*dlgShow)()是我从论坛上看来的,总之改成dlgShow也不行饿!!!
我照1楼说的跟踪了下,出现了 Unhandled exception in YYDllTest.exe:0xC0000005: Access Violation!!!!!
{
dlgShow=(AddrDlgShow)GetProcAddress(hInst,"ShowDlg");
(*dlgShow)();
}=======================
改成这样试一下if(hInst!=NULL)
{
dlgShow=(AddrDlgShow)GetProcAddress(hInst,"ShowDlg");
dlgShow(); //注意,改的是这行。
}
LZ这里为什么不加一个判断
if(dlgshow !=NULL)
{
dlgShow();
}