编译调试都没有问题,在运行时出错,
void CDlgDlg::On_Btnopen()
{
// 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 CDlgDlg::On_Btnsave()
{
// 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);
}
}typedef  bool(__stdcall CHANGE)(LPCSTR,LPCSTR,int iColorBit);void CDlgDlg::On_Btnchange()
{
// TODO: Add your control notification handler code here  
    
HINSTANCE   hInst   =   ::LoadLibrary("d:\\JpgVsbmp.dll");   
  if(   hInst   ==   NULL   )   //PXSTR  //LPCSTR
  {   
AfxMessageBox("缺少JpgVSbmp.dll文件!");   
return;   
  }     //LPCSTR fileName = "D:\\TEST.BMP";
  //LPCSTR fileName1 = "D:\\72_22647.jpg";
  CHANGE*   pFunc =   (CHANGE   *)::GetProcAddress(hInst,"JpgToBmp");   
  pFunc(m_StrJpg,m_StrBmp,24);   
  m_StrBmp.ReleaseBuffer();  
  m_StrJpg.ReleaseBuffer();   
  ::FreeLibrary(hInst);
}
错误为:
Unhandled exception at 0x1002a729 in Dlg.exe: 0xC0000005: Access violation reading location 0x00000000该怎么办?????

解决方案 »

  1.   

    按F5运行, 出错时选"重试", 会回到错误代码. 点开call stack找到你的代码. 就是那了.
      

  2.   

    修改为下面的后:
    typedef  bool(__stdcall CHANGE)(char *,char *,int iColorBit);void CDlgDlg::On_Btnchange()
    {
    // TODO: Add your control notification handler code here  
        
    HINSTANCE   hInst   =   ::LoadLibrary("d:\\JpgVsbmp.dll");   
      if(   hInst   ==   NULL   )   //PXSTR  //LPCSTR
      {   
    AfxMessageBox("缺少JpgVSbmp.dll文件!");   
    return;   
      }     //LPCSTR fileName = "D:\\TEST.BMP";
      //LPCSTR fileName1 = "D:\\72_22647.jpg";
      CHANGE*   pFunc =   (CHANGE   *)::GetProcAddress(hInst,"JpgToBmp");   
    //  pFunc(m_StrJpg,m_StrBmp,24);  
      pFunc(m_StrJpg.GetBuffer(256),m_StrBmp.GetBuffer(256),24);   
      m_StrBmp.ReleaseBuffer();  
      m_StrJpg.ReleaseBuffer();   
      ::FreeLibrary(hInst);
    }错误为:Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call.  This is usually a result of calling a function declared with one calling convention with a function pointer declared with a different calling convention
      

  3.   

    mynamelj(夏娃的诱惑) 
    请问您的博客地址??
    谢谢!!
      

  4.   

    我是想尝试运用JpgVsbmp.dll,参考的是:
    http://blog.csdn.net/lbird/archive/2006/05/12/726245.aspx
    JpgVSbmp.dll里导出的下面两个函数可以实现BMP文件和JPG文件之间的互换,BOOL JpgToBmp(LPCSTR lpJpgFileNameForIn, LPCSTR lpBmpFileNameForOut,int iColorBit=24) 
     lpJpgFileNameForIn :  Bmp文件完整路径
     lpBmpFileNameForOut :  输出的Bmp文件完整路径
     iColorBit :   转换后Bmp图的颜色位数(1——2色,4——16色,8——256色,others——24位)
    BOOL BmpToJpg(LPCSTR lpBmpFileNameForIn, LPCSTR lpJpgFileNameForOut,BOOL bColor, int nQuality)
     lpBmpFileNameForIn :  Bmp文件完整路径
      lpJpgFileNameForOut : 输出的JPG文件完整路径
     bColor :   是否保留彩色(True——保留,False——转为2色图)
     nQuality :  图像质量(1~100,默认75,100为质量最高)
    JpgVSbmp.dll里导出的下面这个函数可以装内存中的DIB保存成JPG格式文件
    BOOL DIBToJpg(HDIB hDIB, LPCSTR lpJpgFileNameForOut,BOOL bColor, int nQuality)
     bColor :   是否保留彩色(True——保留,False——转为2色图)
     nQuality :  图像质量(1~100,默认75,100为质量最高)
     注: HDIB 被声明为 HANDLE 。是GlobalAlloc的返回值,其中保存图像数据。其中法可以参考<MSDN>提供的dibapi.h(cpp)
    lib文件下载单击此处。可惜lib文件无法下载了!!:(