主要内容

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

编译失败

R2026b

您通常在开发计算机上编译 MATLAB® 代码,在该计算机上测试生成的可执行文件,然后将可执行文件和 MATLAB Runtime 部署到没有 MATLAB 测试或客户计算机上。编译过程对您的 MATLAB 代码执行依赖关系分析,创建您的代码和所需工具箱代码的加密存档,生成包装器代码,并将包装器代码编译为可执行文件。如果您的应用程序无法构建可执行文件,以下问题可能会帮助您隔离问题。

请参阅 http://www.mathworks.com/support/compilers/current_release/ 上当前支持的编译器列表。

可以从操作系统命令行或 MATLAB 提示符调用 mcc。当您在 MATLAB 环境中运行 mcc 时,MATLAB 将根据需要修改其环境中的环境变量,以便 mcc 运行。在操作系统命令行中看到的 PATH、LD_LIBRARY_PATH 或其他环境变量的问题通常不会在 MATLAB 提示符中看到。MATLAB 用于 mcc 的环境可以在 MATLAB 提示符中列出。例如:

>>!set
列出 Windows® 平台上的环境。
>>!printenv
列出 UNIX® 平台上的环境。使用此路径允许您从操作系统命令行使用 mcc。

所有 C/C++ 示例的源代码均随 MATLAB Compiler SDK™ 提供,位于 matlabroot\extern\examples\compilersdk 中,其中 matlabroot 是 MATLAB 安装的根文件夹。

如果您的 MATLAB 对象加载失败,通常是因为 MATLAB Runtime 找不到所需的类定义。

使用从 MAT 文件加载的 MATLAB 对象时,请记住在 MATLAB 函数中包含以下语句:

%#function class_constructor 

使用 %#function pragma 强制依赖关系分析器加载所需的类定义,从而使 MATLAB Runtime 能够成功加载对象。

MathWorks® 建议并支持使用 mbuild 来编译您的驱动应用程序。mbuild 经过设计和测试,可以正确构建驱动 mbuild 程序。它将确保 C/C++ 编译器能够找到所有 MATLAB 头文件,并且链接器能够指定和找到所有必要的库。

如果您正在使用 IDE,除了链接到生成的导出库之外,还需要包含对 mclmcrrt.lib 额外依赖。此库为 matlabroot\extern\lib\arch\microsoft 中所有受支持的 Microsoft® 编译器提供。

如果您的计算机上安装了多个版本的 MATLAB,则可能会引用较旧或不兼容的库版本。确保您链接到的唯一 MATLAB 库是 mclmcrrt.lib,并且从适当的文件夹引用它。

尝试按照示例操作使用 MATLAB 代码创建 C 共享库。通常,如果您无法编译文档中的示例,则表明 MATLAB 的安装或系统编译器存在问题。

警告消息

MATLAB:I18n:InconsistentLocale - The system locale setting, 
system_locale_name, is different from the user locale 
setting, user_locale_name
表示 Microsoft Windows 系统上的区域设置不匹配。这可能会影响您显示某些字符的能力。有关更改区域设置的信息,请参阅操作系统帮助。