gpt4 book ai didi

c++ - 如何在c调用的matlab函数中使用 "global static"变量

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:44:53 24 4
gpt4 key购买 nike

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

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

确切地说,如果matlab中有一个函数matlabA()和函数matlabB(),并使用mcc编译器编译成c++共享库为cppA()cppB(),我可以通过在 matlabA()matlabB( )?

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

谢谢!

MATLAB

function matlabA()
global foo
foo = 1;
end

function matlabB()
global foo
foo
end

C++

cppA();
cppB();

最佳答案

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

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

例子:

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

关于c++ - 如何在c调用的matlab函数中使用 "global static"变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15714825/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com