Привет, я в настоящее время кодирую в MATLAB и C. Я скомпилировал функции MATLAB в общую библиотеку C, используя MATLAB Compiler (mcc) и вызывал функции из разделяемой библиотеки в программе на C ++.
Можно ли объявить глобальную переменную для совместного использования данных между функциями MATLAB при вызове в C ++?
Если быть точным, если есть функция matlabA()
и функция matlabB()
в Matlab, и скомпилирован в общую библиотеку C ++ с использованием компилятора mcc как cppA()
а также cppB()
Могу ли я разделить переменную между ними, просто объявив переменные глобальными в matlabA()
а также matlabB()
?
Кажется, он не работает, как я могу разделить переменную между функциями?
Спасибо!
function matlabA()
global foo
foo = 1;
end
function matlabB()
global foo
foo
end
cppA();
cppB();
В соответствии с этот блог Лорен Шуре настоятельно рекомендует не использовать непостоянные статические переменные (например, глобальные переменные чтения / записи) в развернутых приложениях.
Вместо этого вы можете создать обрабатывать класс инкапсулировать данные и явно передавать объект этим функциям (которые имеют семантику ссылочного копирования).
Пример:
classdef FooData < handle
properties
val
end
end
function foo = fun_A()
foo = FooData();
foo.val = 1;
end
function fun_B(foo)
disp(foo.val)
end
Других решений пока нет …