Sol*_*ong 5 c++ matlab global-variables matlab-deployment matlab-compiler
嗨我目前正在使用MATLAB和C进行编码.我已经使用MATLAB Compiler(mcc)将MATLAB函数编译到C共享库中,并在C++程序中调用共享库中的函数.
在C++中调用时,是否可以声明全局变量在MATLAB函数之间共享数据?
确切地说,如果在matlab中有一个函数matlabA()和函数matlabB(),并使用mcc编译器编译成c ++共享库作为cppA()和cppB(),我可以通过将变量声明为全局in matlabA()而在它们之间共享一个变量matlabB()吗?
它似乎不起作用,那么我如何在函数之间共享变量?
谢谢!
function matlabA()
global foo
foo = 1;
end
function matlabB()
global foo
foo
end
Run Code Online (Sandbox Code Playgroud)
cppA();
cppB();
Run Code Online (Sandbox Code Playgroud)
根据Loren Shure 的这篇博客文章,强烈建议不要在已部署的应用程序中使用非常量静态变量(例如读/写全局变量)。
相反,您可以创建一个句柄类来封装数据,并将对象显式传递给这些函数(具有引用复制语义)。
例子:
classdef FooData < handle
properties
val
end
end
Run Code Online (Sandbox Code Playgroud)
function foo = fun_A()
foo = FooData();
foo.val = 1;
end
Run Code Online (Sandbox Code Playgroud)
function fun_B(foo)
disp(foo.val)
end
Run Code Online (Sandbox Code Playgroud)