查看: 258|回复: 3|关注: 0

[已答复] 【求助】MEX编译后,显示未定义函数

[复制链接]

新手

5 麦片

财富积分


050


1

主题

1

帖子

0

最佳答案
发表于 2019-2-10 12:28:11 | 显示全部楼层 |阅读模式
problem.png

MEX编译成功 但是调用时显示未定义函数
网上搜了半天也没找到合适的答案
只能麻烦大家了

  1. #include"mex.h"

  2. double addd(double x,double y)
  3. {
  4.         return x+y;
  5.         }

  6. void mexFunction(int nlhs,int nrhs,mxArray *plhs[],const mxArray *prhs[])
  7. {
  8.     double a,b;
  9.         double *c;
  10.     a = mxGetScalar(prhs[0]);
  11.     b = mxGetScalar(prhs[1]);

  12.     plhs[0] = mxCreateDoubleMatrix(1,1,mxREAL);
  13.     c = mxGetPr(plhs[0]);
  14.     *c = addd(a,b);

  15. }
复制代码


论坛优秀回答者

中级

939 麦片

财富积分


5001500


2

主题

785

帖子

169

最佳答案
  • 关注者: 18
发表于 2019-2-10 16:15:40 | 显示全部楼层
额,不知道楼主为什么会尝试这么做,是看到有其它例子这么使用的吗?

我的理解,c语言是编译型语言,需要把代码编译过成汇编/二进制 代码之后,才能调用,这也是mex存在的意义。
现在你的函数用mex编译了,但是下面一句使用的是类似于脚本语言去调用,这应该行不通。

合理的使用方式,
1) 使用m S function
2) 把这句话放到c文件里面,然后mex 这个c文件,然后再调用。

论坛优秀回答者

权威

3376 麦片

财富积分



2

主题

3643

帖子

759

最佳答案
  • 关注者: 154
发表于 2019-2-10 16:43:13 | 显示全部楼层
本帖最后由 maple1314168 于 2019-2-10 16:45 编辑

看看当前路径有没有 mexw64 后缀的 同名文件?
修改一下顺序:

void mexFunction(int nlhs,mxArray *plhs[],
        int nrhs,const mxArray *prhs[])


用matlab建议的MinGW64 Compiler (C)

附件就是addd.mexw64
放在当前路径可以运行

addd.rar

5.9 KB, 下载次数: 3

论坛优秀回答者

中级

939 麦片

财富积分


5001500


2

主题

785

帖子

169

最佳答案
  • 关注者: 18
发表于 2019-2-11 13:38:40 | 显示全部楼层
maple1314168 发表于 2019-2-10 16:43
看看当前路径有没有 mexw64 后缀的 同名文件?
修改一下顺序:

受教了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

快速回复 返回顶部 返回列表