从Matlab运行C可执行文件
我尝试在linux上运行matlab中的Sift特性描述符可执行文件的C实现。我运行该脚本,并在一些文件夹中的可执行文件和可执行文件是由以下从Matlab运行C可执行文件
./sift <tmp.pgm >tmp.key
运行,我修整与以下Matlab的运行,但没有一次成功
eval('!./sift <tmp.pgm >tmp.key');
system('./sift <tmp.pgm >tmp.key');
unix('./sift <tmp.pgm >tmp.key');
我也查从终端的可执行文件,它没有任何缺陷的工作。有没有其他的方式来做到这一点或我有什么轻微的错误?
我找出问题的路径/matlab/bin/glnxa64/matlab_helper
有权限问题。检查完问题后,所有内容都开始正常工作。
您的语法看起来不错。
-1
状态意味着它可能根本无法找到或启动sift
。我知道这是基本的(我认为有人提到它),但是你的Matlab程序是从sift
在调用它时所在的目录运行的吗? system()
函数针对Matlab会话的当前目录评估路径,而不是调用脚本的位置。如果您的脚本因其他原因而调用cd
,则会影响它。用pwd
检查您的当前目录并执行ls
和exist('./sift', 'file')
以确保它在那里。
如果出现这种情况,可以使用绝对路径调用sift
,使其在运行时使用脚本中的fileparts(mfilename('fullpath'))
进行计算,从而使其更加健壮。
是的,我在同一条路径上运行,并且肯定不会在程序运行时更改工作空间路径 – erogol 2013-03-18 08:30:41
下一个最可能的问题可能是环境变量问题,如路径或库加载路径,或可能是shell配置问题,因为Matlab可以影响这些。通过在'sift'为你工作的终端上执行'set> from_shell.txt'来检查环境,然后在Matlab中使用'system('set> from_matlab.txt')'并且'比较'看看Matlab是否在修改东西。 – 2013-03-18 16:16:53
我想没有任何命令可以在我的Matlab上执行。我尝试了其他人,但没有回应只有-1的地位。 – erogol 2013-03-18 21:30:14
我有同样的权限问题。只是为别人添加解决方案,因为我很难找到解决方案。 打开终端并键入 cd \ path_of_your_file sudo chmod -R 777 它会询问你的密码并允许运行exe。拥抱..
你得到什么错误信息或意外的输出?尝试捕获返回状态和输出,例如'[status,output] = system(...)'。 – 2013-03-18 01:38:10
没有任何错误,只获取-1作为状态。 – erogol 2013-03-18 05:38:06