0

我在 Windows 中用 caffe 编译了 matcaffe。

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

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

caffe_.mexw64使用dependency walker检查了以下文件是否丢失:

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

这从依赖步行者中很明显。所有caffe-related dlls 都找到了。

在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(),那么它运行成功。

此后,我可以matcaffe从任何其他文件夹运行命令而不会出现 MEX 错误(因为 dll 已经加载到内存中)。

我的问题是:

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

更新:

现在我看到这里已经发布了同样的问题,但没有适当的解决方案。

4

1 回答 1

0

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

setenv('PATH',['C:\PYTHON\caffe\matlab\+caffe\private\;',getenv('PATH')]);
于 2018-04-01T23:21:02.873 回答