我如何使用犰狳编译一个墨西哥人文件?

1视图(30天)
我试图使用c++代码编译一个墨西哥人文件使用犰狳c++库。犰狳bla和LAPACK,取决于这两个船与MATLAB。链接对自定义库不支持工作流的副本,所以我将反对在MATLAB版本使用“墨西哥人”命令:万博1manbetx
> >墨西哥人(,(“- l”matlabroot extern \ \ lib \ win64 \ mingw64”),“-llapack”、“-lblas”)
或者,如果使用MSVC c++编译器而不是MinGW:
> >墨西哥人(,(“- l”matlabroot \走读生\ lib \ win64 \微软的),“-llapack”、“-lblas”)
运行这些给输出大量的错误,所有相同的模式:
%用户% \当地\ Temp \ mex_10327564389625623_6476 \ UCompC.obj: UCompC.cpp: (。text + 0 x113f8):未定义的引用“dgemv_”
%用户% \当地\ Temp \ mex_10327564389625623_6476 \ UCompC.obj: UCompC.cpp: (。text + 0 x11ba5):未定义的引用“dnrm2_”
%用户% \当地\ Temp \ mex_10327564389625623_6476 \ UCompC.obj: UCompC.cpp: (。text + 0 x13fc9):未定义的引用“dgemv_”
%用户% \当地\ Temp \ mex_10327564389625623_6476 \ UCompC.obj: UCompC.cpp: (。text + 0 x160a7):未定义的引用“dgemv_”
%用户% \当地\ Temp \ mex_10327564389625623_6476 \ UCompC.obj: UCompC.cpp: (。text + 0 x2f7a0):未定义的引用“ddot_”
%用户% \当地\ Temp \ mex_10327564389625623_6476 \ UCompC.obj: UCompC.cpp: (。text + 0 x3efe6):未定义的引用“dgemv_”
%用户% \当地\ Temp \ mex_10327564389625623_6476 \ UCompC.obj: UCompC.cpp: (。text + 0 x3f61a):未定义的引用“dgemv_”
%用户% \当地\ Temp \ mex_10327564389625623_6476 \ UCompC.obj: UCompC.cpp: (。text + 0 x44831):未定义的引用“dgemv_”
%用户% \当地\ Temp \ mex_10327564389625623_6476 \ UCompC.obj: UCompC.cpp: (。text + 0 x44add):未定义的引用“dgemm_”
%用户% \当地\ Temp \ mex_10327564389625623_6476 \ UCompC.obj: UCompC.cpp: (。text + 0 x44c84):未定义的引用“dgemv_”
所有的这些功能在bla和LAPACK引用的犰狳。
我怎么让犰狳编译?我用MATLAB R2022a发布。

接受的答案

MathWorks支万博1manbetx持团队
潜在的问题是,船的副本bla和LAPACK的MATLAB没有下划线(如定义函数。“dgemv”),而犰狳是指用下划线(如相同的功能。“dgemv_”)。
犰狳引用正确的功能,遵循以下步骤:
1)创建一个c++头文件,并使用它来定义函数名与等效函数名强调没有下划线,如下:
#定义dsyevd_dsyevd
#定义dsyev_dsyev
#定义dgemv_dgemv
#定义dgemm_dgemm
保存该头文件。头文件可以找到附加“defines.hpp”。
2)添加一个' # include”定义。进行“行高于任何犰狳的# include。从本质上讲,任何像行:
#包括“armaMex.hpp”
应该成为:
#包括“defines.hpp”
#包括“armaMex.hpp”
3)添加当前目录(这是一个包含“defines.hpp”)来编译通过添加的我。”“墨西哥人”命令:
> >墨西哥人(,”我。”,[' - l ' matlabroot \走读生\ lib \ win64 \微软的),“-llapack”、“-lblas”)

更多的答案(0)

类别

找到更多的在MATLAB编译器帮助中心文件交换

s manbetx 845


释放

R2022a

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!