dll的代码,dll是通过VC6向导中的MFC AppWizard(dll)建立的。DLL中建立一个对话框,然后建立一函数do_dlg_dll()来创建对话框。
extern "C" _declspec(dllexport) void do_dlg_dll()
{
CXiaoBaiDlg dlg;
dlg.DoModal();
}
exe中的代码,调用这个DLL来弹出对话框
void CCTDlg::OnBtnDll()
{
typedef void(*pMyDll)(void);
HINSTANCE hDLL = LoadLibrary("E:\\code\\CT\\Debug\\CTDll.dll");
pMyDll dll = (pMyDll)GetProcAddress(hDLL,"do_dlg_dll");
dll();
FreeLibrary(hDLL);
}现在这个exe调用dll的时候,HINSTANCE hDLL = LoadLibrary("E:\\code\\CT\\Debug\\CTDll.dll");这一句加载dll无效。
请问高手,为什么?
extern "C" _declspec(dllexport) void do_dlg_dll()
{
CXiaoBaiDlg dlg;
dlg.DoModal();
}
exe中的代码,调用这个DLL来弹出对话框
void CCTDlg::OnBtnDll()
{
typedef void(*pMyDll)(void);
HINSTANCE hDLL = LoadLibrary("E:\\code\\CT\\Debug\\CTDll.dll");
pMyDll dll = (pMyDll)GetProcAddress(hDLL,"do_dlg_dll");
dll();
FreeLibrary(hDLL);
}现在这个exe调用dll的时候,HINSTANCE hDLL = LoadLibrary("E:\\code\\CT\\Debug\\CTDll.dll");这一句加载dll无效。
请问高手,为什么?
这里要判断 NULL == hDLL
如果NULL=hDLL 就是LoadLibrary失败了,通过GetLastError()捕获错误码错误码126找不到指定模块DLL啊,
可能情况1、CTDll.dll的路径不对
2、CTDll.dll可能还调用其他的DLL,你没有其他的这些DLL。可以通过VC的工具Dependency 来查看CTDll.dll依赖的DLL
pMyDll dll = (pMyDll)GetProcAddress(hDLL,"do_dlg_dll");同样这里也要判断 NULL==dll如果NULL=dll 就是GetProcAddress失败了,通过GetLastError()捕获错误码