MFC-Dll调用带参函数报错 0x00000005
typedef int (* PicMerge_)(const char *, const char*,int ,int ,int ,int ,const char*);
HINSTANCE PicMergeDLL = ::LoadLibrary ("AsdPic.dll");
if( NULL != PicMergeDLL )
{
PicMerge_ PicMerge = (PicMerge_)::GetProcAddress (PicMergeDLL, "PicMerge");
if(NULL != PicMerge)
{
//位置
CString ImgX,ImgY;
int pos = SrcImageL.Find(",");
ImgX = SrcImageL.Left(pos);
ImgY = SrcImageL.Right(SrcImageL.GetLength()-pos-1);
int ImageX = atoi(ImgX);
int ImageY = atoi(ImgY);
//图像的高宽
CString SrcX,SrcY;
pos= SrcImageSize.Find(",");
SrcX = SrcImageSize.Left(pos);
SrcY = SrcImageSize.Right(SrcImageSize.GetLength()-pos-1);
int w = atoi(SrcX);
int h = atoi(SrcY);
//char * BackJpg,*Png,*OutputFile;
//BackJpg = FolderPath.GetBuffer(0);
//Png = SreImageName.GetBuffer(0);
//OutputFile = DstPath.GetBuffer(0);
//非法访问内存错误
//开辟新内存
//BackJpg =FolderPath.GetBuffer(FolderPath.GetLength()+1);
//Png = SreImageName.GetBuffer(SreImageName.GetLength()+1);
//OutputFile = DstPath.GetBuffer(DstPath.GetLength()+1);
PicMerge("FFFFFFFFF","FFFFFFFFFFFFFFFGGGG",155,550,133,166,"GGGGGGGGGGGGG");//调用
//释放内存
//FolderPath.ReleaseBuffer();
//SreImageName.ReleaseBuffer();
//DstPath.ReleaseBuffer();
::FreeLibrary (PicMergeDLL);
}
else
{
AfxMessageBox("PicMerge函数地址错误!");
::FreeLibrary (PicMergeDLL);
}
}
else
{
AfxMessageBox("AsdPic.dll加载失败");
}
dll函数定义:
void _declspec(dllexport) __stdcall PicMerge(const char* BackJpg, const char* Png,int x,int y,int w,int h,const char* OutputFile)
{
/*
CString BojPath = PathInitialization();
char* BackPath , * PngPath , * OutputFilePath;
BackPath = new char[strlen(BackJpg)];
CString BackPathN , PngPathN , OutputFilePathN;
//strcpy(BackPathN);
memcpy(BackPath,BackJpg,strlen(BackJpg));
BackPath[strlen(BackPath)] ='\0';
BackPathN.Format("%s",BackPath);
int b = 0;
b = BackPathN.Find("\\");
if ( -1 != b)
{
BackPathN.Format("%s",BackJpg);
}
else
{
BackPathN = BojPath + BackPathN;
}
b = PngPathN.Find("\\");
if ( -1 != b)
{
PngPathN.Format("%s",Png);
}
else
{
PngPathN = BojPath + PngPathN ;
}
b = OutputFilePathN.Find("\\");
if ( -1 != b)
{
OutputFilePathN.Format("%s",OutputFile);
}
else
{
OutputFilePathN = BojPath + OutputFilePathN;
}
b = BackPathN.Find(".");
if ( -1 == b)
{
BackPathN +=".JPG";
}
b = PngPathN.Find(".");
if ( -1 == b)
{
PngPathN +=".PNG";
}
b = OutputFilePathN.Find(".");
if ( -1 == b)
{
OutputFilePathN +=".JPG";
}
// ImageF(BackPath,PngPath,x,y,w,h,OutputFilePath);
// return;
*/
}
调用后 报
“Unhandled” exception in TesD.exe(Kernel32.dll);
0xc0000005 :Access violation
怎么解决。
如果要调用 参数怎么处理