【问题标题】:error: ''cannot convert 'uint8* {aka unsigned int*}' to 'const emxArray_uint8_T*'?'?错误:''无法将'uint8* {aka unsigned int*}'转换为'const emxArray_uint8_T*'?'?
【发布时间】:2018-10-14 20:50:57
【问题描述】:

我编写了一个matlab函数来计算图像“ent=entropoy(image)”的熵,并通过matlab coder将其转换为c++函数。

我在 c++ 文件中的 ent 进行了一些计算,然后尝试将所有 c++ 代码转换为 matlab 函数。

我收到了

错误:'无法将 'uint8* {aka unsigned int*}' 转换为 'const emxArray_uint8_T*'

在熵函数中

如何在 mex 函数中声明图像 'which input from matlab' 并在熵函数中正确使用?

【问题讨论】:

  • emxArray_uint8_T 是如何定义的?很可能需要uint8**
  • 为什么编译器会认为uint8unsigned int
  • 我确实怀疑讽刺,但它完全[...] 已过时、闲聊或其他不必要的,所以我假设是最好的意图
  • @Ander 事实上,它不是。我真的怀疑那个时髦的编译器已经将uint8 定义为一个 64 位整数。我只是以嘲弄的方式说的(说真的,谁会!?)。

标签: c++ image matlab mex matlab-coder


【解决方案1】:

要创建 emxArray_uint8_T,您需要使用 Coder 为您生成的一些辅助函数,例如 emxCreate_uint8_T

从 MATLAB Coder 生成的 emxArray_*_T 类型是用于在生成的代码中存储动态分配的数据的结构。它们包含用于管理动态分配的数据指针、大小向量和其他元数据。

在 MATLAB R2015a 及更高版本中,在 examples 目录下的生成代码中查找文件 main.cmain.h。这些将为您提供一个示例 C 或 C++ 主函数,向您展示如何正确构造输入并调用生成的代码。

答案:

https://stackoverflow.com/a/24271438/3297440

还更详细地介绍了使用生成的 emxArray 类型,并提供了指向 MATLAB Coder 文档的链接。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-30
    • 2017-03-31
    • 1970-01-01
    • 2014-04-05
    • 1970-01-01
    • 1970-01-01
    • 2020-04-04
    相关资源
    最近更新 更多