Как использовать & quot; глобальную статическую & quot; переменная в функции Matlab вызывается в C

Привет, я в настоящее время кодирую в MATLAB и C. Я скомпилировал функции MATLAB в общую библиотеку C, используя MATLAB Compiler (mcc) и вызывал функции из разделяемой библиотеки в программе на C ++.

Можно ли объявить глобальную переменную для совместного использования данных между функциями MATLAB при вызове в C ++?

Если быть точным, если есть функция matlabA() и функция matlabB() в Matlab, и скомпилирован в общую библиотеку C ++ с использованием компилятора mcc как cppA() а также cppB()Могу ли я разделить переменную между ними, просто объявив переменные глобальными в matlabA() а также matlabB()?

Кажется, он не работает, как я могу разделить переменную между функциями?

Спасибо!

MATLAB

function matlabA()
global foo
foo = 1;
end

function matlabB()
global foo
foo
end

C ++

cppA();
cppB();

5

Решение

В соответствии с этот блог Лорен Шуре настоятельно рекомендует не использовать непостоянные статические переменные (например, глобальные переменные чтения / записи) в развернутых приложениях.

Вместо этого вы можете создать обрабатывать класс инкапсулировать данные и явно передавать объект этим функциям (которые имеют семантику ссылочного копирования).

Пример:

FooData.m

classdef FooData < handle
properties
val
end
end

fun_A.m

function foo = fun_A()
foo = FooData();
foo.val = 1;
end

fun_B.m

function fun_B(foo)
disp(foo.val)
end
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]