来自除私人文件夹之外的任何其他文件夹的MEX文件无效

时间:2018-03-31 06:24:46

标签: matlab caffe mex matcaffe

我在Windows中用caffe编译了matcaffe。

我目前的matcaffe文件夹结构如下:

.
C:\PYTHON\caffe
            |-- matlab
                  |
                  |-- +caffe
                         |
                         |--private
                                |
                                |-- caffe_.mexw64
                                |...
                                |-- all hard linked dlls

我已使用依赖性walker检查了caffe_.mexw64,但缺少以下文件:

LIBMEX.DLL
LIBMX.DLL
API-MS-WIN-CORE-WINRT-ERROR-L1-1-0.DLL
API-MS-WIN-CORE-WINRT-L1-1-0.DLL
API-MS-WIN-CORE-WINRT-ROBUFFER-L1-1-0.DLL
API-MS-WIN-CORE-WINRT-STRING-L1-1-0.DLL
DCOMP.DLL
IESHIMS.DLL

从依赖性walker中非常明显。找到所有caffe-related dll

在matlab中,我添加了以下路径:

addpath('C:\PYTHON\caffe\matlab');

但是在运行此命令时:

caffe.run_tests()

我收到以下错误:

Invalid MEX-file 'C:\PYTHON\caffe\matlab\+caffe\private\caffe_.mexw64': The
specified procedure could not be found.
Error in caffe.set_mode_cpu (line 5)
caffe_('set_mode_cpu');
Error in caffe.run_tests (line 6)
caffe.set_mode_cpu(); 

有趣的是以下内容。如果我转到caffe\matlab\+caffe\private文件夹并运行相同的caffe.run_tests(),那么它会成功运行。

此后,我可以在没有来自任何其他文件夹的MEX错误的情况下运行matcaffe命令(因为dll已经加载到内存中)。

我的问题是:

  • 这里发生了什么,我不能直接从任何其他文件夹运行?
  • 如何解决这个问题以获得正常行为?

更新

现在我发现同样的问题已发布here,但没有适当的解决方案。

1 个答案:

答案 0 :(得分:0)

您需要将包含DLL的目录添加到PATH环境变量中。您可以在Windows上的MATLAB中执行此操作(这不能修改Linux和Unix上的等效LD_LIBRARY_PATH):

setenv('PATH',['C:\PYTHON\caffe\matlab\+caffe\private\;',getenv('PATH')]);