MATLAB 编译器的代码文件寻址

Posted

技术标签:

【中文标题】MATLAB 编译器的代码文件寻址【英文标题】:File addressing of code for MATLAB compiler 【发布时间】:2014-08-01 12:18:14 【问题描述】:

在我的代码中,有一些函数,如 imshowfopen 文件需要寻址。当我在 MATLAB 中使用我的程序时,我使用pwdimshow([pwd '/image.jpg']) 进行寻址并且程序运行并正常工作,但是当我在安装程序(重新分发)后编译我的程序时,当我在桌面中打开快捷方式时,会出现一条错误消息我的程序找不到的标题 image.jpg 。当我检查搜索地址时,它就像:

C:/User/Desktop/image.jpg

我阅读了此页面,但我不知道如何使用此寻址。

http://www.mathworks.com/matlabcentral/answers/59148-for-stand-alone-exe-how-do-i-include-a-folder-of-files-and-know-how-to-access-them

除此之外,我不知道应该在 MATLAB 编译器选项中的何处添加这些文件(图像和文本)。在file required for your application to runfile installed with your application

谢谢。

【问题讨论】:

【参考方案1】:

那是因为您的图像不在您当前的路径中(即本例中的桌面)。

如果您想使用图像,您应该在 deploytool 的“共享资源和帮助文件”中包含图像,并在您的脚本/函数中引用链接中指定的图像,使用:

if isdeployed
    imagepath = [ctfroot filesep 'image.jpg'];
else
    imagepath = [pwd filesep 'image.jpg'];
end
% Now use imagepath as if it was [pwd filesep 'image.jpg']
[A] = imread(imagepath);

其他选项是将文件 (image.jpg) 包含在与最终可执行文件相同的路径中,因为您是从 pwd 调用图像。

【讨论】:

感谢您的回答。我正在使用 R2014a。可以选择添加:应用程序运行所需的文件或随应用程序一起安装的文件。 新的搜索路径:C:\Users\User\AppDAta\Local\Temp\User\mcrCache8.3\my_Program_name0\image.jpg。错误:此文件不存在。 当我将文件添加到file required for your application to run 现在文件在C:\Users\User\AppDAta\Local\Temp\User\mcrCache8.3\my_Program_name0\my_Program_name 但错误指的是`C:\Users\User\AppDAta\Local\Temp\User\mcrCache8.3\my_Program_name0 ` 另一个问题@Dani。我的一些文件在我的代码之外的文件夹中。编译程序后如何获得相同的结构? 您可以做什么,以及我实际上在做什么,因为我认为更容易和更透明,是在应用程序的最终文件夹中重新创建您的目录和文件。您可以在 ZIP、RAR、EXE 安装程序或其他任何东西中分发您的应用程序,因此最终用户将拥有 Matlab EXE 和其余文件,其“文件结构”与从 matlab 运行时相同。您必须使用相对路径或密码。这将使您更容易理解为什么您的应用程序失败、所需的文件和文件夹,并且它会简化编译过程,因为您不需要将文件添加到已部署的应用程序中。

以上是关于MATLAB 编译器的代码文件寻址的主要内容,如果未能解决你的问题,请参考以下文章

在编译的 matlab 代码之间切换控制

Matlab Mex代码未编译

内核基础 - 寄存器与内存寻址(by quqi99)

如何通过 Eclipse 编码和编译 Matlab mex 文件?

MATLAB如何编译一个m文件? [关闭]

用于 LINUX 的 MATLAB 编译器