Matlab Compiler fails to include enum class with no methods
Afficher commentaires plus anciens
I'm trying to compile matlab 2017a code. When I run the compiled code I get the following runtime error:
Standard exception: *.cpp:line# -- Undefined variable "EnumClass" or class "EnumClass.enum1".
The enum class is defined according to https://www.mathworks.com/help/matlab/matlab_oop/enumerations.html. Roughly:
classdef EnumClass
enumeration
enum1, enum2, enum3
end
end
I suspect this is because the Matlab Compiler fails to detect EnumClass as a dependency because the matlab compiler detects dependencies using only functions https://www.mathworks.com/matlabcentral/answers/323654-compiler-and-missing-source-files. The enum class has no functions to call.
I know that I can manually specify dependencies with the mcc -a flag, but this is not very maintainable for my situation. There are multiple separate teams each working on modules that get compiled in a programmatic way. So manually specifying dependencies creates undesirable complexity in this process.
Is there a way to change EnumClass or its caller to cue the Matlab Compiler that EnumClass is a dependency?
Réponses (1)
Kojiro Saito
le 7 Jan 2020
Enumeration class can be also included in a standalone application by MATLAB Compiler without specifying the dependency. I have confirmed in R2019b Update 3 that the following command creates a standalone application properly.
mcc -m callEnumTest.m
callEnumTest.m
function callEnumTest
thisDay = WeekDays.Tuesday;
disp(thisDay)
end
WeekDays.m
classdef WeekDays
enumeration
Monday, Tuesday, Wednesday, Thursday, Friday
end
end
I also confimed that Application Compiler app can add dependent files (WeekDays.m) properly.
Anyway, you can add dependencies manually by adding "-a" option in mcc command. For example,
mcc -m callEnumTest.m -a WeekDays.m
1 commentaire
Eric Hardin
le 7 Jan 2020
Catégories
En savoir plus sur MATLAB Compiler dans Centre d'aide et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!