Namespace not recognized when used in a function called from an app

38 visualizaciones (últimos 30 días)
Mat
Mat el 7 de Nov. de 2025 a las 16:18
Editada: Mat el 10 de Nov. de 2025 a las 14:05
I have an app that calls a function in an external file. The function references a class in a namespace directory (beginning with a +). I set up the paths in the app to include the namespace directory's parent folder and not the namespace directory. When the app calls the function, the function generates a MATLAB:UndefinedFunction error that it cannot locate the namespace.class. When I debug I stop at the problematic line and can access the namespace as normal in the debug command line. I can execute the code of the line where the error occurs, but if I click continue in the debugger the code fails.
Simplified example code:
MyProject/
+MyNameSpace/
MyClass.m
MyApp.mlapp
MyFunction.m
startup.m
MyClass.m:
classdef MyClass
properties (Constant)
value = 1;
end
end
MyFunction.m:
function value = MyFunction()
value = MyNameSpace.MyClass.value;
end
startup.m:
function startup
% Determine where your m-file's folder is.
folder = fileparts(which(mfilename));
% Add that folder plus all subfolders to the path.
addpath(folder);
end
Then inside the MyApp.mlapp I use the startupFcn method that is called by the constructor to call startup.m:
function startupFcn(app)
startup
end
And a button callback to call MyFunction:
% Button pushed function: RunButton
function RunButtonPushed(app, event)
value = MyFunction();
end
The returned error states:
"Unrecognized function or variable 'MyNameSpace'."

Respuestas (1)

Taylor
Taylor el 7 de Nov. de 2025 a las 19:56
If value never changes you can just make it constant
classdef MyClass
properties (Constant)
value = 1;
end
end
Otherwise, you can create an instance of the class to access its properties
function value = MyFunction()
obj = MyNameSpace.MyClass();
value = obj.value;
end
  1 comentario
Mat
Mat el 8 de Nov. de 2025 a las 21:48
In actual fact it is a constant! I forgot to put that in the example code. I am using the namespace to contain classes that contain different types of constant. However, this doesn't affect the underlying problem of accessing the namespace from a function called from an app.

Iniciar sesión para comentar.

Categorías

Más información sobre Debugging and Analysis en Help Center y File Exchange.

Productos


Versión

R2025b

Community Treasure Hunt

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

Start Hunting!

Translated by