Octave:可以编译 mex,但出现错误:“无法安装 .mex 文件功能”
Posted
技术标签:
【中文标题】Octave:可以编译 mex,但出现错误:“无法安装 .mex 文件功能”【英文标题】:Octave: can compile mex, but get error: "failed to install .mex file function" 【发布时间】:2017-02-05 17:28:55 【问题描述】:我正在尝试将一段代码从 Matlab 转换为 python。我正在运行 Ubuntu 16.04LTS,需要依靠 Octave 来运行参考代码(Matlab 安装时出现深奥错误)。无论如何,之前从未使用过 Octave,我可能错过了一步,但是在互联网上搜索了一天后,我找不到解决方案。
部分代码使用了 mex 文件。我可以用mkoctfile --mex gradientMex.cpp
或mex --mex gradientMex.cpp
编译它。我没有得到任何输出,但在我的工作目录中生成了一个gradientMex.mex
文件。但是,当我尝试使用 gradientMex()
时,我收到错误 failed to install .mex file function 'gradientMex'
。编译完 mex 文件后有什么需要做的吗?
如果有任何用处,我正在转换的项目是 https://github.com/autocyz/DSST ,我需要从这里复制一些依赖项:https://github.com/pdollar/toolbox/tree/1a3c9869033548abb0c7a3c2aa6a7902c36f39c2/channels/private(wrappers.hpp
和 sse.hpp
)
【问题讨论】:
嗯。也许用mkoctfile --mex -DMATLAB_MEX_FILE gradientMex.cpp
编译?
看起来有效!我现在收到另一个不相关的错误。会解决这个问题,如果您提交您的评论作为答案,我可以接受。
【参考方案1】:
在这个特定项目的源代码中,将 mex 文件加载到 matlab/octave 所需的代码包含在 #ifdef MATLAB_MEX_FILE
部分中,但 mkoctfile
默认情况下没有定义该变量。所以
mkoctfile --mex -DMATLAB_MEX_FILE gradientMex.cpp
让你继续前进。但是,您正在探索一个领域,其中 matlab 和 octave 之间的兼容性非常小,我预计会出现其他错误。 YMMV,但也许安装 matlab 可能比将项目移植到 octave 更痛苦,特别是如果您的 matlab 许可证包含安装支持。祝你好运。
【讨论】:
以上是关于Octave:可以编译 mex,但出现错误:“无法安装 .mex 文件功能”的主要内容,如果未能解决你的问题,请参考以下文章
有没有办法将 mex 文件链接到没有 -fPIC 编译的代码
无法使用 mkoctfile --mex 以八度音阶构建 mex 文件
在 Linux 中编译 C 代码时,Mex 为 // 生成错误