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

16 Ansichten (letzte 30 Tage)
Mat
Mat am 7 Nov. 2025
Bearbeitet: Mat am 10 Nov. 2025
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'."

Antworten (1)

Taylor
Taylor am 7 Nov. 2025
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 Kommentar
Mat
Mat am 8 Nov. 2025
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.

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Debugging and Analysis finden Sie in Help Center und File Exchange

Produkte


Version

R2025b

Community Treasure Hunt

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

Start Hunting!

Translated by