Why does MATLAB crash when my MEX file is linked to a lib file containing STL classes?

3 次查看(过去 30 天)
I have compiled a static .lib file outside of MATLAB, which contains classes/functions that use standard STL libraries. When I link to them from my mex file compiled with Visual Studio, MATLAB crashes during the call to this mex file. Either that, or completly incorrect data is being returned that makes it appear like the STL class constructors are not being called correctly.

采纳的回答

Doug Hull
Doug Hull 2011-1-13
MATLAB mex files are compiled with Visual Studio are compiled with the '_SECURE_SCL=0' flag. This flag changes the structure of all STL classes, and this different structure is incompatable with the STL classes compiled without this flag(default setting). The fix to this is to compile the .lib file with the '_SECURE_SCL=0' flag.

更多回答(1 个)

Uriel
Uriel 2012-6-3
I have the same problem of crashes in stl structures in mex, but in Linux. My mex crashed in the destructor of an std::vector<int>. I could not find this _SECURE_SCL flag under a Linux installation of Matlab. In the mexopts.sh file (nor in any other file in /opt/matlab/bin) the value _SECURE_SCL does not exist. So, the question becomes: 1) Can stl be used in mex's under Linux? 2) If so, then how to avoid these crashes?

类别

Help CenterFile Exchange 中查找有关 Write C Functions Callable from MATLAB (MEX Files) 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by