如何正确管理dll Matlab路径
37视图(30天)
显示旧的评论
在Windows上,我建立一个墨西哥人“myFcn_mex”,链接到一个DLL函数”myLib。通过导入库dll”“myLib.lib”。我有以下的目录结构:
% MY_PROJECT_BASE % \ bin \ \ x86_64获胜
myLib.dll
myLib.lib
% MY_PROJECT_BASE % \ src \包括
myLib.h
% MY_PROJECT % \ src \ matlab
myFcn.m
我的Matlab代码如下:
函数myFcn
如果~ coder.target (MATLAB的)
projectBase = getenv (“MY_PROJECT_BASE”);
includePath = [projectBase filesep“src”filesep“包括”];
libPath = [projectBase filesep“本”filesep“赢”filesep“x86_64”];
库名=“myLib.lib”;
coder.ceval (“myFcn”);
coder.cinclude (“myLib.h”);
coder.updateBuildInfo (“addIncludePaths”,includePath);
coder.updateBuildInfo (“addLinkObjects”,libPath库名”,真的,真的);
其他的
myFcn_mex;
结束
结束
在Matlab我这样做:
(1号线)> >目录([getenv (“MY_PROJECT_BASE”)filesep“本”filesep“赢”filesep“x86_64”]);
采用cd(第2行)> >“MY_PROJECT”));
(第3行)> > codegen myFcn
(4号线)> > myFcn
所以:
- DLL和LIB文件生活在一个文件夹已成功添加到Matlab路径(1号线)
- dll和lib文件所在的文件夹是不一样的,我需要创建我的墨西哥人函数(第2行)
- Codegen myFcn_mex命令成功运行和创建文件。mexw64在我工作目录(3号线)
- 调用墨西哥人函数(4号线)导致错误:
…
失踪共享库的依赖:
“myLib.dll”要求通过
…
函数调用成功如果我在本地复制DLL:
> >! cp % MY_PROJECT_BASE % \ bin \ \ x86_64 \ myLib获胜。dll。\
我很清楚地记得,在过去只是将dll文件所在的目录添加到Matlab路径用于工作。它似乎不再是这种情况。我必须有这个DLL在当前目录或操作系统路径,这将要求我退出Matlab,改变操作系统路径environmant变量,然后重启Matlab。
问题:
- 没有管理一个DLL的另一种方式吗?我不想做我上面描述的两个选项。
- 不同的是如何用myLib方法。所以文件在Linux或myLib。在Mac dylib吗?
谢谢提前