1.mfc的dll时引入mfc库的dll在调用资源之前必须先初始化程序
if(!AfxWinInit(::GetModuleHandle(NULL),NULL,::GetCommandLine(),0))
{
return error;
}
正常的mfc中会隐式调用此程序,而在dll中必须显式调用。
当然这还不够还需要调用一个宏
AFX_MANAGE_STATE(AfxGetStaticModuleState());
此宏的用处是切换当前模块的句柄。因为在默认的情况下,其应用程序的句柄是调用dll的应用程序的句柄,
当发现在应用程序中无此资源时,将会返回无此资源。
获取当前mfc dll的路径,为防止获取到的是调用其得应用程序的路径,需如下:
WCHAR strDllPath[MAX_PATH] = L"";
::GetModuleFileName(theApp.m_hInstance, strDllPath, MAX_PATH);
2.win32的dll时 char filename[MAXPATHLEN]; GetModuleFileNameA(GetModuleHandleA("module"), filename, MAXPATHLEN); 可以获取当前动态库所在路径