您好,我目前正在使用 MATLAB 和 C 进行编码。我已使用以下命令将 MATLAB 函数编译到 C 共享库中:MATLAB编译器 http://www.mathworks.com/help/compiler/shared-libraries.html(mcc),并在C++程序中调用共享库中的函数。
在 C++ 中调用时,能否声明全局变量以在 MATLAB 函数之间共享数据?
准确地说,如果有一个函数matlabA()
和功能matlabB()
在matlab中,并使用mcc编译器编译成c++共享库cppA()
and cppB()
,我可以通过将变量声明为全局来在它们之间共享一个变量吗matlabA()
and matlabB()
?
它似乎不起作用,那么我如何在函数之间共享变量呢?
Thanks!
MATLAB
function matlabA()
global foo
foo = 1;
end
function matlabB()
global foo
foo
end
C++
cppA();
cppB();
根据这篇博文 http://blogs.mathworks.com/loren/2008/06/19/writing-deployable-code/Loren Shure 强烈建议不要在已部署的应用程序中使用非常量静态变量(例如读/写全局变量)。
相反,您可以创建一个处理类 http://www.mathworks.com/help/matlab/handle-classes.html封装数据,并将对象显式传递给这些函数(具有引用复制语义)。
Example:
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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)