Go4Expert

Go4Expert (http://www.go4expert.com/)
-   MFC (http://www.go4expert.com/forums/mfc/)
-   -   launching dll from mfc exe... (http://www.go4expert.com/forums/launching-dll-mfc-exe-t27002/)

sujan.dasmahapatra 23Oct2011 20:07

launching dll from mfc exe...
 
Look Friends
Now I am not calling the dll from not winn32 but from another mfc exe application. Where I have a button when I press it I should load the dll and launch the mainwindow. See my two apis
Code:

void CClientRevProjDlg::OnBnClickedButton1()
{
 typedef VOID (*MYPROC)(HWND);
    HINSTANCE hinstLib;
    MYPROC ProcAdd;
    BOOL fFreeResult, fRunTimeLinkSuccess = FALSE;
 HWND h = AfxGetMainWnd()->GetSafeHwnd();
    // Get a handle to the DLL module.
    hinstLib = LoadLibrary(L"C:\\Users\\DasmahapatraS\\Projects\\Bhagavan_Cadem\\RevolutionProj\\debug\\RevolutionProj.dll");
    // If the handle is valid, try to get the function address.
    if (hinstLib != NULL)
    {
        ProcAdd = (MYPROC) GetProcAddress(hinstLib, "runAppli");
    // Do add operation
    // If the function address is valid, call the function.
        if (fRunTimeLinkSuccess = (ProcAdd != NULL))
            (ProcAdd) (h);
        // Free the DLL module.
        fFreeResult = FreeLibrary(hinstLib);
    }
    // If unable to call the DLL function, use an alternative.
    if (! fRunTimeLinkSuccess)
        printf("message via alternative method\n");
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//And in the dll App.cpp I have an extern "C" like this....
extern "C" BOOL __declspec(dllexport) runAppli(HWND h)
{
    AFX_MANAGE_STATE(AfxGetStaticModuleState());
// HWND h = AfxGetMainWnd()->GetSafeHwnd();
 ShowWindow(h,SW_SHOW);
 return true;
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

With this when I press the run button from client exe, my dll mainwindow is shown but crashing and hanging for sometime. Please help me get rid of this problem someone Thanks a lot.


All times are GMT +5.5. The time now is 03:02.