本页对应的英文页面已更新,但尚未翻译。 若要查看最新内容,请点击此处访问英文页面。

保护您的源代码

虽然 MATLAB® 源代码 (.m) 本身是可执行的,但 MATLAB 源文件的内容很容易被访问,会揭示设计和实现的详细信息。如果您不想以这种格式分发您的专有应用程序代码,可以改用以下选项之一:

  • 以 P 代码的形式部署 - 将您的某些或全部源代码文件转换为一种名为 P 代码文件(文件扩展名为 .p)的掩盖内容的格式,并以此格式来分发您的应用程序代码。当 MATLAB 将某文件转换为 P 代码文件时,该文件将进行模糊处理而非加密。虽然 .p 文件中的内容难以理解,但不应将其视为安全的。建议不要使用 P 代码文件以便保护您的知识产权。

    MATLAB 不支持将实时脚本或实时函数转换为 P 代码文件。

  • 编译为二进制格式 - 使用 MATLAB Compiler 编译您的源代码文件以生成独立应用程序。将后者分发给应用程序的最终用户。

使用 P 代码构建掩盖内容的格式

P 代码文件的行为方式与生成该文件的 MATLAB 源文件相同。P 代码文件的运行速度也与源文件相同。P 代码文件有意进行了模糊处理。它们未被加密。虽然 .p 文件中的内容难以理解,但不应将其视为安全的。建议不要使用 P 代码文件以便保护您的知识产权。

注意

因为 P 代码文件的用户不能查看 MATLAB 代码,所以考虑提供诊断以使用户能够在出现错误时继续操作。

构建 P 代码文件

要生成 P 代码文件,请在 MATLAB 命令行窗口中输入以下命令:

pcode file1 file2, ...

该命令生成文件 file1.pfile2.p 等。要将当前文件夹中的所有 .m 源文件转换为 P 代码文件,请使用以下命令:

pcode *.m

有关用于生成 P 代码文件的所有语法的说明,请参阅 pcode 函数参考页。

调用 P 代码文件

调用生成的 P 代码文件的方式与调用派生该文件的 MATLAB .m 源文件的方式相同。例如,要调用 myfun.p 文件,请键入

[out, out2, ...] = myfun(in1, in2, ...);

要调用 myscript.p 脚本,请键入

myscript;

当您调用 P 代码文件时,MATLAB 以高于 .m 源文件的优先级来执行该代码文件。即使您在生成 P 代码文件后的某时刻碰巧更改了源代码也是如此。请记住在分发您的代码之前删除 .m 源文件。

对较高版本的 MATLAB 运行较早的 P 代码文件

P 代码文件的设计旨在使得所创建的文件不受发行版本以及应用版本的影响(向后和向前兼容性)。MATLAB 的新增功能以及弃用的功能可能会造成问题,但如果您使用原始的 MATLAB 输入文件,也会存在同样的问题。要修复 P 代码文件中的此类错误,请修复相应的 MATLAB 输入文件并创建一个新的 P 代码文件。

使用 MATLAB 7.4 版本及更早版本构建的 P 代码文件与使用更高版本的 MATLAB 构建的 P 代码文件具有不同格式。这些早期的 P 代码文件不能在 MATLAB 8.6 (R2015b) 或更高版本中运行。请使用更新版本的 MATLAB 重新构建使用 MATLAB 7.4 或更早版本构建的任何 P 代码文件,然后根据需要重新进行分发。

构建独立的可执行文件

保护您的源代码的另一种方法是将其置于独立的可执行文件中,并将该可执行文件与所需的任何其他文件一起分发给外部客户。您必须安装 MATLAB Compiler™ 及受支持的 C 或 C++ 编译器,才能准备要部署的文件。但最终用户无需安装 MATLAB。

要针对您的 MATLAB 应用程序构建独立的应用程序,请按照 MATLAB 程序文件的惯常过程开发并调试您的应用程序。然后,按照Create Standalone Application from MATLAB (MATLAB Compiler)中的说明生成一个或多个可执行文件。