MATLAB保护底层代码的两种方法

通常,我们使用MATLAB编辑的都是M文件,包括M函数文件和M脚本文件。但是当我们向用户提供服务时,显然不可能把自己的M文件打包发给他人,这不利于保护自己的算法和底层代码。那么,是否有什么办法可以让用户仅能获取服务而查看不到代码呢?
有,当然有,这里介绍两种容易实现的方法。
方法一:将M文件生成对应的P文件
P 文件是经过模糊处理的只执行形式的 MATLAB 代码,而且它的调用优先级要比M文件高,这意味着当M和P文件共处在一个路径下时,程序运行调用的是P文件而不是M文件。相对于M文件的可以打开,P文件不能在 MATLAB 编辑器或实时编辑器中被打开。
生成P文件的方法很简单,在命令行窗口中输入

pcode filename

如pcode wsy将在当前路径下生成与wsy.m文件相对应的wsy.p文件
如果要同时生成多个P文件,则使用

pcode filename1 filename2 filename3...

方法二:将所有M文件打包生成exe独立应用程序
相对于P文件而言,独立的应用程序exe文件的实用性更高,这意味着你提供给用户的是一个包装好、可以直接使用的“产品”,而不是一个个的代码文件。更何况,P文件需要在MATLAB平台上才能运行,这一局限性对用户来说是比较大的。
生成exe文件的方法也比较简单,举例来说
当前,我的工程里首先运行的是一个脚本文件Run_GUI.m,在后续的操作中陆续要调用两个脚本script1.m和script2.m,以及两个函数function1.m和function2.m,那么我需要在命令行窗口中执行以下代码

mcc -m Run_GUI.m script1.m script2.m function1.m function2.m

或者是

mcc -e Run_GUI.m script1.m script2.m function1.m function2.m

注:后面的脚本文件和函数文件顺序无所谓,但是首先运行的Run_GUI.m必须要放在第一位,这样生成的exe文件名就是Run_GUI.exe。
下面再来说说mcc -m和mcc -e的区别。
其中,使用mcc -m命令生成的exe文件在双击运行时会自动打开Windows命令提示符窗口,可以充当MATLAB的命令行窗口使用,程序运行的情况或者报错都将在该令提示符窗口中显示。而mcc -e生成的exe文件在执行时就不会打开Windows命令提示符窗口。


由上述mcc命令生成的exe应用程序可以脱离MATLAB而单独使用,但这并不意味着它不需要任何的组件支持。

MATLAB Runtime—— 无需安装 MATLAB 即可运行编译的 MATLAB 应用程序或组件,是一套独立的共享库。

Runtime就是我们在使用exe程序前需要安装的一个库,其版本示生成exe的MATLAB版本而定。比如,我使用matlab 2016a生成的exe,在没有安装Runtime的情况下运行时就会出现如下错误
在这里插入图片描述
Runtime的安装并不复杂,它的安装程序一般可以在已安装的MATLAB路径下找到<matlab installation path>\toolbox\compiler\deploy\win64
在我的2016版本中,进入该路径下有个MCRInstaller.exe程序,他就是我需要的Runtime安装程序。
或者可以在MATLAB的官网上选择对应的版本下载安装。
https://ww2.mathworks.cn/products/compiler/matlab-runtime.html
总结来说就是,MATLAB通过mcc命令生成的exe独立应用程序,可以脱离MATLAB单独运行,但是使用它的客户端需要有Runtime组件的支持。

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值