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