我正在尝试制作一个使用.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'));
由于
答案 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);