主要内容

本页采用了机器翻译。点击此处可查看最新英文版本。

测试失败

成功编译应用程序后,下一步是在开发计算机上测试它,并将其部署到目标计算机上。通常,目标计算机没有安装 MATLAB®,需要安装 MATLAB Runtime。分发版包含应用程序运行所需的所有文件,其中包括可执行文件、可部署存档和 MATLAB Runtime

通过在 MATLAB Compiler™ 附带的 MATLAB Runtime 上运行该应用程序来在开发计算机上测试该应用程序。这将验证库依赖关系是否正确、可部署存档是否可以提取以及应用程序所需的所有 MATLAB 代码、MEX 文件和支持文件是否已包含在存档中。如果您在测试应用程序时遇到错误,以下问题可能会帮助您找出问题所在。

您能从 MATLAB 执行该应用程序吗?

在开发计算机上,您可以通过在 MATLAB 提示符下发出 !application-name 来测试应用程序的执行。如果您的应用程序在 MATLAB 内部执行但不在外部执行,则这可能表明系统 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 出现在您计算机的 matlabroot\runtime\win64 环境变量中安装的其他版本的 MATLAB 的 PATH 之前。

类似地,在 UNIX® 上,确保动态库路径(Linux® 上为 LD_LIBRARY_PATH)匹配。通过比较 MATLAB 提示符下的 !printenv 和 shell 提示符下的 printenv 的输出来执行此操作。使用此路径允许您从操作系统命令行使用 mcc

如果您正在测试独立可执行文件或共享库和驱动应用程序,您是否安装了 MATLAB Runtime

您的独立可执行文件或共享库所需的所有共享库都包含在 MATLAB Runtime 中。任何部署目标都需要安装 MATLAB Runtime

您是否收到有关缺少 DLL 的错误消息?

错误消息表明缺少 DLL(例如 mclmcrrtX_XX.dllmclmcrrtX_XX.so 通常是由 MATLAB Runtime 安装不正确引起的。有关安装 MATLAB Runtime 的信息,请参阅下载并安装 MATLAB Runtime

MATLAB Runtime 也可能安装正确,但 PATHLD_LIBRARY_PATHDYLD_LIBRARY_PATH 变量设置不正确。有关设置环境变量的信息,请参阅针对部署设置 MATLAB Runtime 路径

小心

不要通过移动 MATLAB Runtime 文件夹结构内的库或其他文件来解决这些问题。MATLAB Runtime 系统设计用于适应在同一台计算机上运行的不同 MATLAB Runtime 版本。文件夹结构是此功能的重要组成部分。