2014-04-13 65 views
0

我有一個在VC++中開發的應用程序,它使用第三方DLL,它也是在VC++中開發的 它工作正常,並且使用依賴關係walker檢查時,應用程序和dll依賴MFC42.dll ,MSVCRT.dll的,MSVCP60.dll等將VC++應用程序移植到VS2008中的問題

應用程序現在移植到VS2008,並有在調用該DLL的代碼沒有變化。 正常功能調用的DLL函數

後工作正常,但試圖調用函數對話框,像

MyFunc(void) 
{ 
handle = AfxGetResourceHandle(); 
AfxSetResourceHandle(::GetModuleHandle(mydll)); 
if(myCDialog.DoModal() == IDOK) 
{ 
/* My Functionality */ 
} 
AfxSetResourceHandle(handle); 
} 

有在的MFC42.dll(0000005)錯誤訪問衝突而試圖執行的DoModal。

的exe代碼是好的,因爲它可以完美地與DLL與VS2008和更高的製造工作。

回答

0

我認爲你需要使用AFX_MANAGE_STATE(AfxGetStaticModuleState())使MFC框架來正確處理資源。

extern "C" void WINAPI MyFunc(void) 
{ 
    AFX_MANAGE_STATE(AfxGetStaticModuleState()); 
    if(myCDialog.DoModal() == IDOK) 
    { 
    /* My Functionality */ 
    } 
} 
2

將應用程序移植到VC-2008時,不應再依賴MFC42.DLL。這是VC 6.0中的MFC DLL。

也許你codenow使用VC-2008 MFC但你的圖書館從VC++ 6.0使用MFC。 如果兩個(庫和你的代碼)共享MFC代碼這可不行。

PS:當切換開發環境,確保您所有的第三方庫也支持這個環境。可能你只需要一個新的lib文件。或者如果你有源代碼,你需要重建lib。

相關問題