在Matlab中搜索从.m目录开始的路径

时间:2014-12-31 17:40:23

标签: matlab dll path directory loadlibrary

我正在尝试制作一个使用.m文件的.dll文件,我希望能够将我的脚本无错误地传递给其他人。唯一的问题是,如果你指定,matlab总是从matlabroot或某个驱动器开始搜索。包含此项目的文件夹的位置将根据用户而有所不同。所以我不能简单地使用这个功能:

loadlibrary("C:\Users\Public\Documents\projectFolder\file.dll", "C:\Users\Public\Documents\projectFolder\file.h")

在我的.m文件中,假设每个用户都有"C:\Users\Public\Documents"中的项目文件夹。

我试图看看matlab是否有办法知道.m文件的位置并从该路径开始,然后我可以像这样设置代码:

path = [some code which finds the path of .m file];

loadlibrary(strcat(path, 'file.dll'), strcat(path, 'file.h'));

由于

1 个答案:

答案 0 :(得分:0)

MATLAB要求任何.m文件在其运行之前都在其搜索路径中(我不认为这是严格正确的,但如果不是这样,它会大肆抱怨)。用户可以非常轻松地从其路径中添加和/或减去目录,因此可以安全地假设,如果用户已经安装了脚本,他们会将其放在MATLAB路径中的某个位置。如果他们没有,并且他们尝试运行它,MATLAB将弹出一个对话框,警告脚本不在路径中,并询问他们是否要暂时添加它。

至于如何找到它以及如何使用这些信息,你可以这样做:

scriptLocation = mfilename('fullpath');
[directory,name,extension] = fileparts(scriptLocation);
dllLocation = fullfile(directory,[name '.dll']);
headerLocation = fullfile(directory,[name '.h]);

loadlibrary(dllLocation, headerLocation);