如何在c中调用的matlab函数中使用"全局静态"变量

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()吗?

它似乎不起作用,那么我如何在函数之间共享变量?

谢谢!

MATLAB

function matlabA()
    global foo
    foo = 1;
end

function matlabB()
    global foo
    foo
end
Run Code Online (Sandbox Code Playgroud)

C++

cppA();
cppB();
Run Code Online (Sandbox Code Playgroud)

Amr*_*mro 2

根据Loren Shure 的这篇博客文章,强烈建议不要在已部署的应用程序中使用非常量静态变量(例如读/写全局变量)。

相反,您可以创建一个句柄类来封装数据,并将对象显式传递给这些函数(具有引用复制语义)。

例子:

FooData.m

classdef FooData < handle
    properties
        val
    end
end
Run Code Online (Sandbox Code Playgroud)

乐趣_A.m

function foo = fun_A()
    foo = FooData();
    foo.val = 1;
end
Run Code Online (Sandbox Code Playgroud)

乐趣_B.m

function fun_B(foo)
    disp(foo.val)
end
Run Code Online (Sandbox Code Playgroud)