测试失败
成功编译应用程序后,下一步是在开发计算机上测试它,并将其部署到目标计算机上。通常,目标计算机没有安装 MATLAB®,需要安装 MATLAB Runtime。分发版包含应用程序运行所需的所有文件,其中包括可执行文件、可部署存档和 MATLAB Runtime。
通过在 MATLAB Compiler™ 附带的 MATLAB Runtime 上运行该应用程序来在开发计算机上测试该应用程序。这将验证库依赖关系是否正确、可部署存档是否可以提取以及应用程序所需的所有 MATLAB 代码、MEX 文件和支持文件是否已包含在存档中。如果您在测试应用程序时遇到错误,以下问题可能会帮助您找出问题所在。
您能从 MATLAB 执行该应用程序吗?
在开发计算机上,您可以通过在 MATLAB 提示符下发出 !
来测试应用程序的执行。如果您的应用程序在 MATLAB 内部执行但不在外部执行,则这可能表明系统 application-name
PATH
变量存在问题。
应用程序是否开始执行并导致 MATLAB 或其他错误?
确保在编译应用程序时包含了所有必要的文件(有关更多详细信息,请参阅编译生成的 readme.txt
文件)。
从主 MATLAB 文件调用的函数会被 MATLAB Compiler 自动包含;但是,未明确调用的函数(例如通过 EVAL 调用的函数)需要在编译时使用 -a
命令的 mcc
开关来包含。此外,任何支持文件(例如 .mat
,.txt
或 .html
文件)都需要使用 -a
开关添加到存档中。MATLAB 及其相关工具箱的可编译功能存在限制。检查文档以查看应用程序的 MATLAB 文件中使用的函数是否有效。检查开发计算机上的文件 mccExcludedFiles.log
。该文件列出了您的应用程序调用的所有无法编译的函数。
有时,MATLAB Runtime 和 Microsoft® Windows® 中包含的 DLL 版本不匹配。您可以使用进程监视器工具调查应用程序调用了哪些 DLL。有关将进程监视器与已部署的应用程序结合使用的信息,请参阅如何使用进程监视器排除程序执行故障?。
您是否安装了多个 MATLAB 版本?
MATLAB Compiler 生成的可执行文件旨在安装有多个版本 MATLAB 的环境中运行。一些旧版本的 MATLAB 可能与此架构不完全兼容。
在 Windows 上,确保您正在编译的 MATLAB 版本的
出现在您计算机的 matlabroot
\runtime\win64
环境变量中安装的其他版本的 MATLAB 的 matlabroot
\runtime\win64PATH
之前。
类似地,在 UNIX® 上,确保动态库路径(Linux® 上为 LD_LIBRARY_PATH
)匹配。通过比较 MATLAB 提示符下的 !printenv
和 shell 提示符下的 printenv
的输出来执行此操作。使用此路径允许您从操作系统命令行使用 mcc
。
如果您正在测试独立可执行文件或共享库和驱动应用程序,您是否安装了 MATLAB Runtime?
您的独立可执行文件或共享库所需的所有共享库都包含在 MATLAB Runtime 中。任何部署目标都需要安装 MATLAB Runtime。
您是否收到有关缺少 DLL 的错误消息?
错误消息表明缺少 DLL(例如 mclmcrrt
或 X_XX
.dllmclmcrrt
通常是由 MATLAB Runtime 安装不正确引起的。有关安装 MATLAB Runtime 的信息,请参阅下载并安装 MATLAB Runtime。 X_XX
.so
MATLAB Runtime 也可能安装正确,但 PATH
、LD_LIBRARY_PATH
或 DYLD_LIBRARY_PATH
变量设置不正确。有关设置环境变量的信息,请参阅针对部署设置 MATLAB Runtime 路径。
小心
不要通过移动 MATLAB Runtime 文件夹结构内的库或其他文件来解决这些问题。MATLAB Runtime 系统设计用于适应在同一台计算机上运行的不同 MATLAB Runtime 版本。文件夹结构是此功能的重要组成部分。