叔叔写的一个matlab程序,需要防copy软件授权加密机制(基本都运行在WINDOWS平台),找到了我让我帮忙解决。因为不了解matlab语言,我的第一个想法就是使用外部接口的策略来做这方面的软件授权验证工作(既把授权软件使用的加密算法集成到外部接口程序中也就是其他高级语言编写实现,以接口的形式来与matlab衔接),可在使用matlab与外部程序接口的时候发现matlab真的好糗(可能自己还没发现matlab的真谛吧,不过说回来matlab的图形效果真的很棒),以下是本人在使用matlab与外部程序接口加载调用时的详细心得:
1.matlab的loadlibrary方法 不能直接加载调用DLL文件(经过本人多次测试 笔者用delphi写的一个dll导出函数的动态链接库 不能被matlab调用)
2.笔者又再次使用delphi编写了一个基于Windows-COM的规范的DLL动态链接库文件,使用matlab的actxcontrol方法来加载调用,再次经过多次测试最终还是以失败告终,但本人发现个问题运用RegDllView.exe、oleview.exe两款工具参看本机的dll注册列表信息发现一个奇怪的问题.
RegDllView.exe中"控件"列的为"是"的一些DLL控件是可以使用matlab的actxcontrol方法加载调用成功(并使用methodsview方法可以查看到该控件的详细类、方法、参数等详细信息)
以下为笔者机器中经过测试后 可以使用matlab的actxcontrol方法加载调用的控件名
%MPS.StormPlayer.1
%MediaLib.PlaylistCtrl.1
%VisOcx.DrawingControl.1
%VisioModelingEngine.VisioModelingEngine.3
%AliIMX.WangWangX.1
%POWERPLAYER.PowerPlayerCtrl.1
%Aliedit.EditCtrl.1
希望本文对 在使用matlab与外部程序接