您好我正在使用MATLAB和C进行编码。我已使用MATLAB Compiler(mcc)将MATLAB函数编译到C共享库中,并在C ++程序中调用共享库中的函数。
在C ++中调用时,是否可以声明全局变量在MATLAB函数之间共享数据?
确切地说,如果matlab中有函数matlabA()
和函数matlabB()
,并使用mcc编译器cppA()
和cppB()
编译成c ++共享库,只是通过在matlabA()
和matlabB()
中将变量声明为全局变量,我可以在它们之间共享变量吗?
它似乎不起作用,那么如何在函数之间共享变量?
谢谢!
function matlabA()
global foo
foo = 1;
end
function matlabB()
global foo
foo
end
cppA();
cppB();
答案 0 :(得分:2)
根据Loren Shure的this blog post,强烈建议不要在已部署的应用程序中使用非常量静态变量(例如读/写全局变量)。
相反,您可以创建一个handle class来封装数据,并将对象显式传递给那些函数(具有引用复制语义)。
示例:
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