如何使用用户预定义的数据设置 mwArray?是不是可以混合使用 Matlab 库编译器和 mex 运行时?

Posted

技术标签:

【中文标题】如何使用用户预定义的数据设置 mwArray?是不是可以混合使用 Matlab 库编译器和 mex 运行时?【英文标题】:How to set mwArray with user predefined data? Is it possible mix Matlab library compiler & mex runtimes?如何使用用户预定义的数据设置 mwArray?是否可以混合使用 Matlab 库编译器和 mex 运行时? 【发布时间】:2018-10-17 06:43:44 【问题描述】:

我开始使用 Matlab 生产库:Matlab Coder 和 Matlab library Compiler。我有几个问题

    mxArray 和 mwArray 有什么区别? (下面回答)

    是否可以使用用户预定义的数据设置 mxArray? (下面回答)

3.是否可以使用用户预定义的数据设置 mwArray?

4.是否可以从 mex 文件运行 Matlab 库编译器 DLL?

我将 matlab 库编译器 dll 与 matlab 编码器结合使用

    coder.ceval(...)

第一次调用任何一个

    mlcInitializeApplication(..)

    MY_MATLAB_LIBRARY_NAME_Initialize(..)

return false 并且任何 mwArray 构造函数都会抛出异常

混合 mex 和 mlc 运行时库是否有问题?

** 顺便说一句 - 当我将 mex 代码编译为 C++ 时,一切正常。

【问题讨论】:

【参考方案1】:
    mxArray 和 mwArray 有什么区别?

(来自 Matlab)mwArray 是一个类(C++ 概念),用于将输入和输出传递给由 Matlab 编译器 SDK 生成的 C++ 函数 该类由一个围绕 MATLAB® 数组的薄包装器组成。 MATLAB 中的所有数据都由数组表示。 mwArray 类提供了数组创建和初始化所需的构造函数、方法和运算符,以及简单的索引

mxArray 是一个包含不透明类型的 C 类型。它可以保存数组或矩阵,主要作为 C mex 文件的输入/输出。

** 我猜 mx 计划是针对 mex 而 mw 计划是针对 matlab 包装器,但我不确定。

    是否可以使用用户预定义的数据设置 mxArray - 是的

Here is an example

    mxArray *output[];
    output[0] = mxCreateNumericArray(ndim, dim, mxDOUBLE_CLASS, mxREAL);
    outData = mxGetPr(yourPtr);

3.是否可以使用用户预定义的数据设置 mwArray?我不知道

    是否可以从 mex 文件运行 Matlab 库编译器 DLL? 来自 Matlab 工程师:不能混合使用 mlc 和 mex 运行时。

【讨论】:

以上是关于如何使用用户预定义的数据设置 mwArray?是不是可以混合使用 Matlab 库编译器和 mex 运行时?的主要内容,如果未能解决你的问题,请参考以下文章

如何在“mwArray *”和“mxArray *”之间传输数据?

在vc6.0中如何使用mwArray这个结构体啊,这个结构体是matlab中的数组,我用的matlab2009

MWArray 到 C# 数组,无需跳槽

C++:mwArray 作为 C++ 类中的变量

C#:MWArray 和获取类的实例

mwArray和cv::Mat转化函数 20170812