MATLAB Answers

0

Why does MATLAB crash when I make a function call on a DLL in MATLAB 7.6 (R2008a)?

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.

Tags

Products


Release

R2008a

1 Answer

Answer by MathWorks Support Team on 8 Apr 2015
 Accepted Answer

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 Comments

Sign in to comment.