调用C++;来自Matlab的类(具有内存持久性) 我如何调用Matlab中的C++类(.cpp和.h文件),使其在内存中保持持久,直到使用它,然后才释放它?

调用C++;来自Matlab的类(具有内存持久性) 我如何调用Matlab中的C++类(.cpp和.h文件),使其在内存中保持持久,直到使用它,然后才释放它?,c++,matlab,C++,Matlab,例如: 一个可以无限期运行的MatlabGUI。在启动时,分配C++类。只要GUI正在运行(即使在空闲模式下),该类就会保持持久性,并等待GUI调用其方法。当用户关闭GUI时,该类被释放 谢谢 我认为您需要创建一个Init和Exit函数,为类分配和释放内存。当GUI启动时,应调用Init,当您完成时,应调用Exit。您可以按如下方式实现它(未经测试,也不知道此方法有多安全,也不要无序调用Init/Exit): 然后,您可以编写其他函数来访问/操作MyClass的实例。这有点像创建一个漂亮的C++

例如: 一个可以无限期运行的MatlabGUI。在启动时,分配C++类。只要GUI正在运行(即使在空闲模式下),该类就会保持持久性,并等待GUI调用其方法。当用户关闭GUI时,该类被释放


谢谢

我认为您需要创建一个
Init
Exit
函数,为类分配和释放内存。当GUI启动时,应调用
Init
,当您完成时,应调用
Exit
。您可以按如下方式实现它(未经测试,也不知道此方法有多安全,也不要无序调用Init/Exit):

然后,您可以编写其他函数来访问/操作
MyClass
的实例。这有点像创建一个漂亮的C++类的丑陋的C包装器,但我不知道一个更优雅的解决方案。 另见:

在MATLAB中心文件交换中有一个关于如何执行此操作的示例。它是由几个MaWorksDealWord开发人员提供的,它展示了如何在ME类中通过安全的MeX接口来封装C++类,而不存在内存泄漏。在Matlab中实现与底层C++接口类似的接口。

链接似乎过时了。@ YyValWeiSLER现在整个文件交换看起来都要向下维护。一旦备份,我想链接会很好-我今天早上成功地跟踪了它。我已经看到了这个例子。遗憾的是,在编译mex文件时出现了一个致命错误,关于某个无法包含的“stdint.h”文件。我不太知道如何修理它。是吗?不幸的是,我不是mex的大用户。不过,我见过提交书的作者奥利弗·伍德福德,他很有帮助——你可以在提交页面上用问题与他联系。
class MyClass
{
public:
    MyClass(int a) : m_A(a) {}
private:
    int m_A;
};

MyClass* instance;

void Wrapper_Init(void)
{
    instance = new MyClass(5);
}

void Wrapper_Exit(void)
{
    delete instance;
}