2012-12-13 41 views
3

我有一个运行C++函数的matlab代码,它可以在我的电脑 或任何其他我尝试运行它的桌面上运行。 (以其他桌面上运行我复制了MATLAB/C++函数和MEX文件),我试图运行SGE集群上的代码使用sge集群在Matlab下运行C++代码?

但最近我得到一个错误messege

“未定义函数'img'用于'double'类型的输入参数“

”img“是由matlab调用的C++函数。

没有人遇到同样的问题吗? 有谁知道如何解决它?

10X 埃拉德

+0

是否确定mex文件是从集群上的计算节点“可见”的?在我已经在提交主机上安装一个库的几个集群上(运行'qsub'等的机器)并没有使它可以被计算节点上的进程访问。请咨询您的系统管理员。 –

+0

10x为您的回复,虐待检查后,我重新mex的功能,以适应sge平台。 – Dudas

回答

1

好像你的笔记本电脑/台式机和SGE在不同的操作系统。对于不同的体系结构,您需要将您的C++代码重新编码为mex

您SGE配置mex

>> mex -setup 

我强烈建议使用gcc。现在你可以mex你的C++代码。请注意,mex文件的文件扩展名为,在windows/sge以及32位和64位系统上的其他不同。

如果您没有mex文件的正确扩展名(可以使用mexext命令进行检查),Matlab无法找到要运行的函数,并且得到的错误与您所得到的错误很相似。

快乐的光明节。

+0

嗨, 我不知道每个系统都有不同的mex文件,但它当然是有道理的。 我可以将mex文件从windows64平台下载到mexa64中,或者我大部分都有linux系统吗? 10x和Hag_Samech为你 – Dudas

+1

@Dudas - 你需要为每个平台“mex”你的文件。由于'C++'编译器不是一个大问题,你不应该觉得这太难了。 – Shai