jpg1.dll是jpg轉bmp的,在調用時出現總是問題,想大家幫忙看看是出了什麼原因void CJpgTobmpDlg::OnButton1() //選擇jpg格式文件路徑
{
// TODO: Add your control notification handler code here
CFileDialog dlg(TRUE,"jpg",NULL,OFN_HIDEREADONLY |OFN_OVERWRITEPROMPT,"Jpg File(*.jpg)|*.jpg||");
if(dlg.DoModal()==IDOK){
m_strJpg = dlg.GetPathName();
UpdateData(FALSE);
}
}
void CJpgTobmpDlg::OnButton2() 選擇保存bmp路徑
{
// TODO: Add your control notification handler code here
CFileDialog dlg(FALSE,"bmp",NULL,OFN_HIDEREADONLY |OFN_OVERWRITEPROMPT,"Bmp File(*.bmp)|*.bmp||");
     if(dlg.DoModal()==IDOK){
m_strBmp = dlg.GetPathName();
UpdateData(FALSE);
}
}
以上程式沒有問題問題出在下面:一運行就出現”0x00000000”指令參考的”0x00000000”記憶體.
該記憶體不能為”read”的對話框,幫忙看看是什麼原因
void CJpgTobmpDlg::OnButton3()
{ static HINSTANCE hCamDLL=NULL;
CHANGE *pFunc;
hCamDLL = LoadLibrary("jpg1.dll");
pFunc= (CHANGE*)GetProcAddress(hCamDLL,"jpgTobmp");
 pFunc(m_strJpg.GetBuffer(50),m_strBmp.GetBuffer(50));
 m_strJpg.ReleaseBuffer();
 m_strBmp.ReleaseBuffer();
  ::FreeLibrary(hCamDLL);
}

解决方案 »

  1.   

    hCamDLL = LoadLibrary("jpg1.dll");
    //DLL是否LOAD成功?
    pFunc= (CHANGE*)GetProcAddress(hCamDLL,"jpgTobmp");
    //函数是否能够取到?
      

  2.   

    嗯,判断一下dll,函数都是否成功
      

  3.   

    if(NULL==LoadLibrary("jpg1.dll"))//load fails
      

  4.   

    追蹤時出現這樣的,該怎樣處理
    - hInst 0x00000000
    unused CXX0030: Error: expression cannot be evaluated
      

  5.   

    用if(NULL==LoadLibrary("jpg1.dll"))測試
    是load fails,那應該怎樣改啊
      

  6.   

    怎樣加绝对路径
    我已經把jpf1放在工程目錄中
      

  7.   

    把dll放放到debug目录下再運行,就出pFunc有問題
    運行下面,結果是fails,怎麼辦啊pFunc= (CHANGE*)GetProcAddress(hInst,"jpgTobmp");
     if(NULL==pFunc)
     { AfxMessageBox(" fails",MB_OK,0);
     return ;
    }
      

  8.   

    dll中文件是否导出?
    引入的函数指针声明是否正确?
      

  9.   

    hInst = ::LoadLibrary("jpg1.dll")是可以导出,不為null,我已經測試過,
    dll已經放到debug目录下,運行下面,結果是fails,怎麼辦啊void CJpgTobmpDlg::OnButton3() 
    {
     UpdateData(TRUE);
     HINSTANCE hInst;
     CHANGE *pFunc;
     hInst = ::LoadLibrary("jpg1.dll");
    if(NULL==LoadLibrary("jpg1.dll"))
    { AfxMessageBox("load fails",MB_OK,0);
     return ;
    }
     pFunc= (CHANGE*)GetProcAddress(hInst,"jpgTobmp");
     if(NULL==pFunc)
     { AfxMessageBox(" fails",MB_OK,0);
     return ;
    }
     pFunc(m_strJpg.GetBuffer(50),m_strBmp.GetBuffer(50));
     m_strJpg.ReleaseBuffer();
     m_strBmp.ReleaseBuffer();
     ::FreeLibrary(hInst);}
      

  10.   

    hInst = ::LoadLibrary("jpg1.dll");
    if(NULL==LoadLibrary("jpg1.dll"))
    { AfxMessageBox("load fails",MB_OK,0);
     return ;
    }
    函数是可以导出,大小沒有錯
      

  11.   

    晕,LoadLibrary调用了两次,
    char path[128] = {0};
    GetModuleFileName(NULL, path, sizeof(path));
    char *p = strrchr(path,'\\');
    memset( *(p + 1), 0, sizeof(*(p+1)) );
    strcat(path, "jpgl.dll");
    hInst = Loadlibrary(path);
    if( hInst == NULL )
    {
       AfxMessageBox("加载dll错误!");
       return ;
    }
    pFunc= (CHANGE*)GetProcAddress(hInst,"jpgTobmp");
     if(NULL==pFunc)
     { 
       AfxMessageBox("GetProc fails");
       FreeLibrary(hInst);
       return ;
    }
    pFunc(...);
      

  12.   

    char path[128] = {0};
    GetModuleFileName(NULL, path, sizeof(path));
    char *p = strrchr(path,'\\');
    memset( *(p + 1), 0, sizeof(*(p+1)) );
    strcat(path, "jpgl.dll");
    hInst = Loadlibrary(path);
    if( hInst == NULL )
    {
       AfxMessageBox("加载dll错误!");
       return ;
    }
    pFunc= (CHANGE*)GetProcAddress(hInst,"jpgTobmp");
     if(NULL==pFunc)
     { 
       AfxMessageBox("GetProc fails");
       FreeLibrary(hInst);
       return ;
    }
    pFunc(...);
      

  13.   

    對于memset(*(p+1), 0, sizeof(*(p+1)) );出現如下錯誤
    error C2664: 'memset' : cannot convert parameter 1 from 'char' to 'void *'
      

  14.   

    memset(*(p+1), 0, sizeof(*(p+1)) );
    改成
    *(p+1) = 0;
      

  15.   

    memset((p+1), 0, sizeof(*(p+1)) );
    或者*(p+1) = 0;用法就这样,具体对没对没仔细看。
      

  16.   

    memset((p+1), 0, sizeof(*(p+1)) );
    改成*(p+1) = 0;以後是
      加载dll错误
      

  17.   

    memset( *(p + 1), 0, sizeof(*(p+1)) );改为
    memset((p+1), 0, sizeof(p+1) );
    加载dll 错误???
    是不是dll文件不存在?要么dll被破坏,从别处令拷贝一个试试