Error "Access violation executing location 0x00000000" when using mwArray in Visual-C++

16 vues (au cours des 30 derniers jours)
chaocanha
chaocanha le 22 Oct 2013
I am trying to use Matlab function in VSC++ mfc 2012 to edit image. I got an this error:
Unhandled exception at 0x74E9C9F1 in pa2sample.exe: 0xC0000005: Access violation executing location 0x00000000
when I use mwArray. This is my code in C++:
BYTE* im=new BYTE();
ImgProc(1,mwArray (im),mwArray(img));
This code will use the Matlab function to convert image into grayscale image. img variable is the BYTE pointer to the buffer where image places. im variable is the output image.
ImgProc is a Matlab function:
function im=ImgProc(x)
im=rgb2gray(x);
Here is the ImgProc C++ function after converted from Matlab
ImgProc(int nargout, mwArray& im, const mwArray& x);
I appreciate if someone could help me. I have got stuck for 2 days.

Réponses (1)

Friedrich
Friedrich le 22 Oct 2013
Modifié(e) : Friedrich le 22 Oct 2013
Hi,
you don't need to allocate memory for the output. MATLAB will do this for you:
mwArray out;
ImgProc(1,out,mwArray(img));
Also are you sure the call to mwArray(img) succeeds? What is img (data type and size)? AFAIK there is no constructor which would match your usecase here
  12 commentaires
Friedrich
Friedrich le 23 Oct 2013
Does the call to ImgProcInitialize succeed? It also has a return value? What datatype dies sFileName have?
chaocanha
chaocanha le 23 Oct 2013
Modifié(e) : chaocanha le 23 Oct 2013
sFileName is CString which contains the video file path.
CFileDialog dlgFile(TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, _T("Movie Files (*.avi;*.mpg;*.mp4)|*.avi;*.mpg;*.mp4||"), this);
CString sFileName = dlgFile.GetPathName();
bool a=mclInitializeApplication(NULL,0);
bool b= ImgProcInitialize();
mwArray out(sFileName);
ImgProc(out);
ImgProcTerminate();
mclTerminateApplication();
ImgProcInitialize() returns true which is fine. Im wondering if the lines are true because I dont know how to check value of it:
mwArray out(sFileName);
ImgProc(out);
Edit: The error looks like:
Microsoft C++ exception: mwException at memory location

Connectez-vous pour commenter.

Catégories

En savoir plus sur Deploy to C++ Applications Using mwArray API (C++03) dans Help Center et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by