5

嗨,我目前正在使用 MATLAB 和 C 进行编码。我已经使用MATLAB Compiler (mcc) 将 MATLAB 函数编译到 C 共享库中,并在 C++ 程序中调用了共享库中的函数。

在 C++ 中调用时,是否可以声明全局变量以在 MATLAB 函数之间共享数据?

确切的说,如果matlab中有一个函数matlabA()和函数matlabB(),并且使用mcc编译器as cppA()and编译成c++共享库,我可以通过在andcppB()中声明变量为全局变量来共享它们之间的变量吗?matlabA()matlabB()

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

谢谢!

MATLAB

function matlabA()
    global foo
    foo = 1;
end

function matlabB()
    global foo
    foo
end

C++

cppA();
cppB();
4

1 回答 1

2

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

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

例子:

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
于 2013-03-30T12:18:30.753 回答