2

我觉得这是一个相对基本的问题,但解决方案似乎超出了我的谷歌范围。

设置:

我在 ~/project 中有一个 matlab 项目,它引用文件夹 /s/cplex/matlab 中的一个 matlab 库(cplex)。我可以通过调用 addpath('/s/cplex/matlab') 然后运行我的 main() 脚本来成功编译我的应用程序。

目标:

我想将我的项目构建为可执行文件,以便它仍然可以引用 /s/cplex/matlab。理想情况下,/s/cplex/matlab 将被打包到这个可执行文件中,以便它是可移植的。

问题:

我做这项工作的尝试都是徒劳的。我仔细研究了http://blogs.mathworks.com/loren/2008/08/11/path-management-in-deployed-applications/并尝试了:

  1. 在运行可执行文件之前将 /s/cplex/cplex/matlab 添加到 LD_LIBRARY_PATH
  2. 在启动 MATLAB 之前将 /s/cplex/cplex/matlab 添加到 LD_LIBRARY_PATH,使其位于 MATLAB LD_LIBRARY_PATH
  3. 将 /s/cplex/cplex/matlab 添加到 MATLAB 的 deploytool 中的 Shared Resources and Helper Files 面板
  4. 编译前通过 addpath() 将 /s/cplex/cplex/matlab 添加到 MATLAB 路径中
  5. 在 MATLAB 的 deploytool 中将 /s/cplex/cplex/matlab 添加到 Package 面板

通过所有这些尝试,生成的可执行文件仍然无法找到 cplex 目录。将 matlab 可执行文件链接/打包到其 .m 依赖项的最佳方法是什么?

4

1 回答 1

1

啊啊!修复。

问题

对于任何有类似问题的人来说,问题确实出在@符号上。我使用的是 AFS 文件系统,它将文件路径中的 @sys 解析为机器/操作系统对。我的路径中有“@sys”字符串以保持其通用性,MATLAB 将其视为表示类文件夹的关键字并被误读。

解决方案

我用实际的文件夹名称替换了所有出现的“@sys”,MATLAB 正确解析了它们。请注意,此解决方案并非立即显而易见,因为我使用的路径是指向带有“@sys”字符串的完整路径的符号链接。

于 2013-10-23T02:42:03.097 回答