“double”类型的输入参数的未定义函数

时间:2015-01-27 15:35:09

标签: c++ matlab function undefined

我从这里下载了MATLAB代码http://cazencott.info/dotclear/public/code/scones.zip。当我运行' demo'时,它会说"未定义的功能' maxflowmex'对于' double'"类型的输入参数。实际上只有一个c ++文件" maxflowmex.cpp"在文件夹中(已添加到路径中)。是否需要" maxflowmex.m"而不是" maxflowmex.cpp"运行正常吗?或者其他一些方法来调用" maxflowmex.cpp"?或者我需要编译一些东西?

1 个答案:

答案 0 :(得分:1)

我刚看了一下zip文件。在maxflow目录中有MEX包装器,它们在MATLAB中调用这些函数,这些函数用C语言编写,但可以在MATLAB中运行。这些MEX包装器需要使用与您的操作系统兼容的编译器进行编译,然后再运行它们。

但是,有预编译的二进制文件,但我只看到Linux和Mac OS的64位二进制文​​件,我没有看到Windows二进制文件。由于无法运行它们,因此很可能运行 32位操作系统或Windows。我怀疑你运行的是Windows或32位Linux,因为Mac OS默认为64位。

您需要运行make.m脚本,以便为您的计算机编译maxflow库。编译库后,运行demo.m应该会成功。

在此之前,您需要确保通过在命令窗口中执行mex来设置mex -setup,然后选择正确的编译器。完成此操作后,运行make.m目录中的maxflow

如果您没有编译器,如果您使用的是Linux,那么在apt-get软件包上执行gcc应该足够了,所以:

sudo apt-get update
sudo apt-get install gcc-4.6-base g++-4.6 cpp-4.6 libgomp1 libquadmath0 libc6-dev

如果您使用的是Windows,那么您需要的受支持的编译器将取决于您使用的MATLAB版本。我假设您使用的是最新版本,因此下载最新版本的Visual Studio Express以及SDK应该足够了。