Why does MATLAB crash when I make a function call on a DLL in MATLAB 7.6 (R2008a)?
7 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
MathWorks Support Team
el 8 de Sept. de 2011
Editada: MathWorks Support Team
el 6 de Dic. de 2013
When I try to use a DLL in MATLAB 7.6 (R2008a) it crashes. I get a very short stack trace. It does work with MATLAB 7.5 (R2007b) though.
Respuesta aceptada
MathWorks Support Team
el 8 de Abr. de 2015
This could be an issue related to how the DLL exposes it methods. It is possible that MATLAB does not understand the calling convention for the specific function contained within the DLL. The function may be using the STDCALLcalling convention resulting in a MATLAB crash. This error can be detected in several ways:
-- Nearly empty stack trace
-- C mex file would have required fixed header or special compile options to work.
-- It worked in previous versions of MATLAB
To solve the issue, create a PROTOTYPE file for the library and edit it with the correct fcns.calltype values.
1. Create the prototype file, 'mHeader':
[notfound, warnings] = loadlibrary('library.dll', 'library.h', 'mfilename', 'mHeader');
2. Unload the library:
unloadlibrary('library')
3. Edit the prototype file, mHeader.m. Change all instances of 'cdecl' to 'stdcall'
4. Load the library using the prototype file:
[notfound, warnings] = loadlibrary('library.dll',@mHeader);
This command loads the DLL with the correct calling convention.
Note: The above mentioned change is needed in MATLAB 7.6 (R2008a) and later versions. The issue is not present in MATLAB 7.5 (R2007b) and earlier versions.
0 comentarios
Más respuestas (0)
Ver también
Categorías
Más información sobre Startup and Shutdown en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!