如何查看 动态库资源 冲突问题
在调用资源前使用
以下是在 dll 中的定义
CLDCControlDialog * CLDCFilesControl::DoModalPropertyDlg03(HWND hParent)
{
m_pPropertyDlg = new CFilesPropertyDlg2(CWnd::FromHandle(hParent));
}
以下是 EXE 对 dll的调用
CDialog * CLeadShowView::DoModalPropertyDlg03(CLDCControl40 *pCtrl, CWnd *pEdtWnd)
{
//AFX_MANAGE_STATE(AfxGetAppModuleState());
m_pLDCControlDialog = pCtrl->DoModalPropertyDlg03(this->m_hWnd);
}
要判断在dll弹出对话框时,dan当前资源需要做
CLDCControlDialog * CLDCFilesControl::DoModalPropertyDlg03(HWND hParent)
{
HINSTANCE dll_hInstance = AfxGetResourceHandle(); !!!
m_pPropertyDlg = new CFilesPropertyDlg2(CWnd::FromHandle(hParent));
}
CDialog * CLeadShowView::DoModalPropertyDlg03(CLDCControl40 *pCtrl, CWnd *pEdtWnd)
{
HINSTANCE exe_hInstance = AfxGetResourceHandle(); !!!
m_pLDCControlDialog = pCtrl->DoModalPropertyDlg03(this->m_hWnd);
}
然后只需要看 dll_hInstance 和 exe_hInstance 区别,如果相同,说明调用资源仍然是exe的资源,
dll_hInstance应该等于
DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)
{
}
中的hInstance 参数
本文介绍了一种检查DLL与EXE间资源冲突的方法。通过对比两者HINSTANCE实例来判断是否使用了相同的资源,确保DLL调用资源时不会与EXE产生冲突。
4万+

被折叠的 条评论
为什么被折叠?



