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

36 visualizzazioni (ultimi 30 giorni)
Mat
Mat il 7 Nov 2025 alle 16:18
Modificato: Mat il 10 Nov 2025 alle 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'."

Risposte (1)

Taylor
Taylor il 7 Nov 2025 alle 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 Commento
Mat
Mat il 8 Nov 2025 alle 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.

Accedi per commentare.

Categorie

Scopri di più su Debugging and Analysis in Help Center e File Exchange

Prodotti


Release

R2025b

Community Treasure Hunt

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

Start Hunting!

Translated by