Problem With MEX files and DLLs

4 visualizzazioni (ultimi 30 giorni)
Jacob Mevorach
Jacob Mevorach il 2 Nov 2017
Commentato: Jacob Mevorach il 3 Nov 2017
So I have been getting the same error for every mex file I've attempted to run. To be clear I wrote a program with a bunch of mex files in it on another computer and then transferred that program to multiple computers. On all of the computers it works except for one where I get the following error message for every single MEX file in the program.
Invalid Mex File <name of mex>.mexw64:
Missing symbol
'?to_ustring@i18n@fl@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@PEBD@Z' in
'<path to MATLAB>\MATLAB\R2017b/bin/win64\libmwi18n.dll' required by
'<path to mex>\<name of mex>.mexw64'.
Does anyone know how to fix this problem?
  4 Commenti
Walter Roberson
Walter Roberson il 2 Nov 2017
By the way, the above demangles to
class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> > __cdecl fl::i18n::to_ustring(char const * __ptr64)
In short, it is having trouble finding fl::i18n::to_ustring in libmwi18n.dll
Jacob Mevorach
Jacob Mevorach il 3 Nov 2017
Modificato: Jacob Mevorach il 3 Nov 2017
Would there be any way to possibly modify the current version of libmwi18n.dll so that it would work with my code?

Accedi per commentare.

Risposta accettata

James Tursa
James Tursa il 2 Nov 2017
Modificato: James Tursa il 2 Nov 2017
In general, compiled mex routines are not guaranteed to be compatible between different versions of MATLAB. E.g., the functions available in the libraries can change. If the earlier version is missing a library routine that the mex routine compiled with the later version is relying on, your only hope is probably to recompile the mex routine on the older computer.
What versions of MATLAB are being used on the other computers where it works?
  3 Commenti
James Tursa
James Tursa il 3 Nov 2017
Why can't you use multiple versions of your compiled code?
Jacob Mevorach
Jacob Mevorach il 3 Nov 2017
It's lengthy and split up into many different functions interspersed in a large program due to the fact that much of the code linking up these functions can't be turned into C/C++. It would be around a full day of re-compiling everything using the MATLAB coder. And even then if the functionality changed slightly it could throw things off. I might conceivably have to do this the next time a MATLAB release comes out and I don't think there will be any noticable improvement benefits for my specific program by going from 2017a to 2017b.
I was hoping there would be a quick fix that would make all future versions of MATLAB back compatible with MEX files compiled on earlier versions but I guess that won't be the case which is rather unfortunate.
Thank you for your help however, I greatly appreciate it.

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su MATLAB Compiler in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by