编译MATLAB脚本后mfilename返回临时路径,如何获取可执行文件正确路径?
编译后Matlab程序获取正确路径的替代方案
当Matlab脚本/函数被编译为EXE、DLL或.NET程序集后,mfilename会返回MCR临时缓存路径,无法用于定位部署目录下的文件,可通过以下函数获取实际运行路径:
独立可执行文件(EXE)
使用system_dependent('getexepath'),直接返回当前运行的EXE文件的完整路径:
exeFullPath = system_dependent('getexepath'); % 提取EXE所在文件夹路径 deployFolder = fileparts(exeFullPath);
DLL或.NET程序集
使用system_dependent('getmodulefilename'),获取当前模块(DLL/程序集)的实际路径:
moduleFullPath = system_dependent('getmodulefilename'); deployFolder = fileparts(moduleFullPath);
补充说明
编译后的程序会被MCR解压到临时缓存目录运行,mfilename指向的是这个临时目录中的解压文件,而上述函数从系统层面直接获取可执行模块的部署路径,能准确找到你放置程序的目录,便于读取相对路径下的配置、资源文件。
内容的提问来源于stack exchange,提问作者weirdgyn
相关产品推荐
相关产品推荐

