测试失败
成功编译应用程序之后,下一步是在开发机器上测试应用程序,并将其部署到目标机器上。通常目标机器没有MATLAB®安装,并要求MATLAB运行时被安装。发行版包括应用程序运行所需的所有文件,其中包括可执行文件、可部署归档文件和MATLAB运行时.
看到包C / c++应用程序有关特定应用程序类型和平台的发布内容的信息。
控件上运行应用程序,在开发计算机上测试应用程序MATLAB运行时附带MATLAB编译器SDK™.这将验证库依赖项是否正确,可部署归档文件是否可以被提取,归档文件中是否包含了应用程序所需的所有MATLAB代码、mex文件和支持文件。金宝app如果您在测试应用程序时遇到错误,右边列中的问题可以帮助您隔离问题。
您是否能够从这里执行应用程序MATLAB?
在开发机器上,您可以通过发出命令来测试应用程序的执行!
应用程序名称
在MATLAB提示符处。如果你的应用程序在MATLAB中执行,而不是从外部执行,这可能表明系统变量之一有问题:
路径
LD_LIBRARY_PATH
DYLD_LIBRARY_PATH
应用程序是否开始执行并产生结果MATLAB或其他错误吗?
确保在编译应用程序时包含了所有必要的文件(请参阅固定
文件生成与您的编译的更多细节)。
从你的主MATLAB文件调用的函数被自动包括MATLAB编译器SDK作为函数包括使用% #函数
编译指示。但是,没有显式调用的函数(例如通过EVAL)需要在编译时使用——一个
开关的世纪挑战集团
命令。此外,任何支持文件,金宝app如.mat
,. txt
,或. html
文件需要添加到归档文件——一个
开关。MATLAB和可编译的相关工具箱的功能是有限制的。检查文档,查看应用程序的MATLAB文件中使用的函数是否有效。检查文件mccExcludedFiles.log
在开发机上。此文件列出了从应用程序调用的所有不能编译的函数。
你有多个MATLAB版本安装吗?
生成可执行文件使用MATLAB编译器SDK组件被设计为在安装了多个版本MATLAB的环境中运行。一些旧版本的MATLAB可能不能完全兼容这个架构。
在Windows操作系统下,请确保matlabroot
\ runtime \ win64
您正在编译的MATLAB版本的前面出现matlabroot
\ runtime \ win64
的其他版本的MATLAB安装路径
机器上的环境变量。
同样,在UNIX®,确保动态库路径(LD_LIBRARY_PATH
在Linux上®)匹配。通过比较printenv !
在MATLAB提示和printenv
在shell提示符处。使用此路径可以使用世纪挑战集团
从操作系统命令行。
如果您正在测试一个共享库和驱动程序应用程序,您是否安装MATLAB运行时?
共享库所需的所有共享库都包含在MATLAB运行时.安装MATLAB运行时是任何部署目标所必需的。有关安装的资料MATLAB运行时,请参阅安装和配置MATLAB运行时.
你是否收到一个关于缺少DLL的错误消息?
提示缺少dll的错误消息,例如mclmcrrtX_XX
. dll
或mclmcrrtX_XX
所以
一般是由于安装错误MATLAB运行时.有关安装的资料MATLAB运行时,请参阅安装和配置MATLAB运行时.
也有可能MATLAB运行时是正确安装,但路径
,LD_LIBRARY_PATH
,或DYLD_LIBRARY_PATH
变量设置不正确。有关设置环境变量的信息,请参见设置MATLAB运行时路径的部署.
谨慎
不能通过移动库或其他文件在MATLAB运行时文件夹结构。的MATLAB运行时系统的设计是为了适应不同的MATLAB运行时在同一机器上运行的版本。文件夹结构是这个特性的重要组成部分。
在尝试运行共享库应用程序时是否收到错误?
调用MATLAB编译器SDK生成的共享库除了库调用本身之外,还需要正确的初始化和终止。有关调用共享库的信息,请参见从C/ c++调用MATLAB编译器SDK API函数.
为了避免运行时出现错误,需要考虑的一些关键问题:
确保把电话打给mclinitializeApplication
和库名
初始化
是成功的。第一个函数支持构造MATLAB运行时实例。第二步创建MATLAB运行时被命名的库所需的实例库名
.如果这些调用不成功,您的应用程序将不会执行。
不要使用任何mw -
或mx -
函数之前调用mclinitializeApplication
.这包括在程序开始时初始化的静态变量和全局变量。引用mw -
或mx -
函数在初始化之前会导致未定义的行为。
不重新初始化(调用mclinitializeApplication
)在用mclTerminateApplication
.的mclinitializeApplication
和库名
初始化
函数只能被调用一次。
确保之后没有任何库调用mclTerminateApplication
.
确保使用正确的语法来调用库及其函数。
你的系统的图形卡支持图形应用程序吗?金宝app
在现有硬件显卡不支持图形应用程序的情况下,可以使用OpenGL软件。金宝appOpenGL库对应用程序是可见的matlabroot
/ sys / opengl / lib /拱
到库路径。例如,在Linux下,在Bash shell中输入如下内容:
出口LD_LIBRARY_PATH = $ LD_LIBRARY_PATH:matlabroot/ sys / opengl / lib / glnxa64
有关设置环境变量的更多信息,请参见设置MATLAB运行时路径的部署.
是OpenGL正确安装在您的系统上?
当搜索OpenGL库时,MATLAB运行时首先查看系统库路径。如果OpenGL在那里没有找到,它会使用LD_LIBRARY_PATH
环境变量来定位库。如果由于没有找到OpenGL库而导致失败,您可以将OpenGL库的位置附加到LD_LIBRARY_PATH
环境变量。例如,在Linux下,在Bash shell中输入如下内容:
出口LD_LIBRARY_PATH = $ LD_LIBRARY_PATH:matlabroot/ sys / opengl / lib / glnxa64
有关设置环境变量的更多信息,请参见设置MATLAB运行时路径的部署.