一个关于dll调用的问题。
在ImageSize.cpp中添加,生成ImageSize.dll
extern "C" _declspec(dllexport) CRect SetImageSize(CRect rc,CRect PaperSize)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
double a,b;
a=(double)PaperSize.bottom/(double)PaperSize.right;
b=(double)rc.bottom/(double)rc.right;
if((PaperSize.bottom<rc.bottom)&&(a<b))
{
rc.bottom=PaperSize.bottom;
rc.right=(long)(rc.bottom*(1/b));
return rc;
}if((PaperSize.right<rc.right)&&(a>b))
{
rc.right=PaperSize.right;
rc.bottom=(long)(rc.right*b);
return rc;
}
else
return rc;
}
在实现文件中调用此函数。
typedef CRect (WINAPI * TESTDLL)(CRect,CRect);
HINSTANCE hmod;
hmod = ::LoadLibrary ("ImageSize.dll");
if(hmod==NULL)
{
AfxMessageBox("Fail");
}
TESTDLL lpproc;
lpproc = (TESTDLL)GetProcAddress (hmod,"SetImageSize");
if(lpproc!=(TESTDLL)NULL)
rc=(*lpproc)(rc,pInfo->m_rectDraw);
FreeLibrary(hmod);
调试在rc=(*lpproc)(rc,pInfo->m_rectDraw);一句中出错!!
不知是那里的问题!
大家给看看!