编译调试都没有问题,在运行时出错,
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该怎么办?????
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该怎么办?????
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
请问您的博客地址??
谢谢!!
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文件无法下载了!!:(