多语言展示
当前在线:816今日阅读:97今日分享:45

MATLAB提示找不到Maple.dll

最近笔者遇到了一个说大不大、说小也不小的问题——用Matlab解方程,输入“sym x”后就弹出了一个对话框,提示“OpenMaple cannot find Maple engine library, maple.dll”、“找不到指定的模块。”,点击确定后提示“错误使用 sym (line 186)”、“错误使用 maplemex”,如图所示。输入syms、solve等与解方程有关的命令也会出现类似的情况。回想起之前本人有特意安装过maple 2016,当时装在D盘,而后因安装在D盘软件过少便把D盘下所有文件拷贝到G:\D\目录下,并删除了“D:”盘符,即原来安装于D:\Program Files\Maple 2016\的Maple软件被我移动到了G:\D\Program Files\Maple 2016\目录下。移动完毕试着打开Maple软件,发现依旧能用,便没有继续管过,直到最近发现Matlab无法使用“sym”、“syms”等命令。闭门造车半天,终于找到原因出在这里,并最终成功解决了问题,现分享之,望后来者少走弯路。太长不看版:用注册表编辑器将整个注册表导出为.reg文件,然后使用Notepad++批量替换字符串并另存为新的.reg文件,利用注册表编辑器导入修改结果。
工具/原料
1

Matlab

2

注册表编辑器

3

Notepad++或其他文本编辑器,如系统自带的记事本(不推荐,记事本打开大文件会很卡)

方法/步骤
1

Matlab执行sym等命令时,会调用到Maple.dll,而其获取此文件位置的方式应该是读取注册表。然而,我在粗暴移动Maple的安装目录时,并未随之及时改正注册表信息。MATLAB执行sym等命令时仍按照注册表中的路径“D:\Program Files\Maple 2016\bin.X86_64_WINDOWS”寻找Maple.dll(实际位于“G:\D\Program Files\Maple 2016\bin.X86_64_WINDOWS”),因此无法找到,从而报错。(如何快速确定该文件的位置?推荐使用软件Everything进行搜索。)

2

既然推测是注册表的问题,就从注册表编辑器入手。首先明确我要做什么:目前的注册表中存在大量包含“D:\”字符串的键和键值,而现在D:盘已经不存在了,所以这些内容都是错误的,应该把“D:\”和“d:\”全部替换为“G:\D\”。

3

Win+R后输入regedit并回车,打开注册表编辑器。

4

在注册表编辑器中,如果一个个查找-替换不知道也等到猴年马月。因此,考虑导出整个注册表。在保存.reg文件的弹窗中,选择导出范围为“全部”。

5

然后,用文本编辑工具Notepad++(下载地址:https://notepad-plus-plus.org/downloads/)打开刚才保存的.reg文件,并另存为一个新的文件(以免出现不可逆的后果)。按下Ctrl+F随便查找一下“D:\”,可以看出,在注册表编辑器中,文件路径中的“\”都是用“\\”表示的。因此,字符串替换任务应为:将所有“D:\\”和“d:\\”都替换为“G:\\D\\”。

6

按Ctrl+H调出替换窗口,进行如图所示的替换。其中,取消勾选“匹配大小写”表示“d:\\”也会被替换为“G:\\D\\”。

7

替换完成后,保存文件。然后在注册表编辑器中依次点击文件-导入,选择刚才修改过的.reg文件。等待一段时间后即导入完成。可能会报一点小错,提示“没有全部导入成功,某些键和键值正在被系统程序使用或你没有足够的权限”云云,不用理会。

8

启动MATLAB,输入“sym x”命令,发现已经可以顺利执行。

推荐信息