C++ 科学计算矩阵数学库: Intel MKL+ Dlib +Armadillo 编程环境配置安装以及使用matlab将M文件编译成链接库


配置时间 2022年11月13日

  •  电脑主机:以下编程环境 只适用于windows 10 操作系统 
  •  在线安装Visual Studio 2019编译器环境【MSVC 14.29版本(对应Visual Studio1929 (Version 16.10 + 16.11)】+对应windows SDK10 kit 【版本10.0.19041.0】,注意各个工具的版本。

     在线安装VS结束,要手动配置系统环境变量:
     INCLUDE环境变量:

C++ 科学计算矩阵数学库: Intel MKL+ Dlib +Armadillo 编程环境配置安装以及使用matlab将M文件编译成链接库_第1张图片

        LIB环境变量:

C++ 科学计算矩阵数学库: Intel MKL+ Dlib +Armadillo 编程环境配置安装以及使用matlab将M文件编译成链接库_第2张图片

        PATH环境变量:

        VS安装路径环境变量:

  • 安装Matlab必须2020a新版以上(PATH环境变量配置,尽量排序靠前上移)
    D:\Program Files\Polyspace\R2020a\bin\win64
    D:\Program Files\Polyspace\R2020a\runtime\win64
    D:\Program Files\Polyspace\R2020a\bin
    • 安装matlab,需要同时勾选 matlab coder 以及library compiler等编译器APP工具,以便于自己编写的matlab .m程序文件,编译成 C++ .lib .dll 链接库
    • 用matlab生成dll(Dynamic Linked Library)文件

      • 需要带有mcc编译器的matlab软件,这个可以通过在matlab命令行中输入:!mcc命令来查看: 仔细阅读打印信息之后,可以看到mcc编译器的命令使用方法。然后输入mex -setup设置语言为C++
      • 然后在命令窗口输入mbuild -setup选中要使用的 C++ 编译器,而不是 C 编译器,在这里请选择你需要的C++编译器,尽量与C++程序开发使用的编译器保持一致。比如可以使用Visual Studio自带的Microsoft Visual C++ 2019编译器( matlab只是适配mingw 6.3)
      • 选好编译器后在命令窗口输入deploytool进入编译窗口,在弹出的窗口中选择 Library Compiler 。选择C++ Shared Library类型,在旁边的白色框中点击加号将需要编译成dll的.m文件添加到当前项目中。然后可以点击右上角的package按钮生成dll文件了。
      • 等待一段时间之后就可以在指定的目录下for_redistribution_files_only文件夹内看到生成dll以及相应的.h.lib文件
  • Cmake工具【3.24版本 下载 .msi直接安装】
  • 安装Intel MKL OneAPI 库,参考:安装步骤
    • 不要勾选安装内容太多,只勾选oneAPI Math Kernel Library
    • 在 VC++目录中

      设置可执行文件目录:C:\Program Files (x86)\Intel\oneAPI\mkl\2022.1.0\bin\intel64 
      
      包含目录:C:\Program Files (x86)\Intel\oneAPI\mkl\2022.1.0\include
      
      库目录(有两个):C:\Program Files (x86)\Intel\oneAPI\mkl\2022.1.0\lib\intel64
      
      C:\Program Files (x86)\Intel\oneAPI\compiler\2022.1.0\windows\compiler\lib\intel64_win
      • 环境变量

C++ 科学计算矩阵数学库: Intel MKL+ Dlib +Armadillo 编程环境配置安装以及使用matlab将M文件编译成链接库_第3张图片

  • 项目涉及科学计算库Eigen、Dlib、Armadillo库等
    • Arma库不需要编译安装,直接下载源文件即可被C++项目使用
    • Arma库 要求MKL库 C++头文件 #include之前 宏定义:请看官网说明
    #define ARMA_USE_LAPACK
    #define ARMA_USE_BLAS
    #define ARMA_USE_OPENMP
    #define ARMA_DONT_USE_WRAPPER
  • Eigen库只需要源码即可(它们源码都在.h文件里)
  • 安装Dlib库,cmake编译C++源码(需要编译成链接库才能被后续自己程序使用)
    • 版本 dlib19.24
    • 利用VS2019编译器
    • 注意勾选BLAS、LAPARK、MKL库的支持,如果不需要人脸识别的使用,GIF、PNG、SQLITE3等可以不勾选
    • MKL_WITH_TBB库不勾选,AVX、SSE4可以勾选,mkl_iomp_dll路径要找对
    • 如果不想要底层加速计算库,不勾选上述库支持,后续项目使用计算则会很慢
    • 设置CMAKE_INSTALL_PREFIX :自己安装路径

C++ 科学计算矩阵数学库: Intel MKL+ Dlib +Armadillo 编程环境配置安装以及使用matlab将M文件编译成链接库_第4张图片

  • 在线安装Qt 6.3.2版本 + Qtcreator 8.02版本 ,这可以适配QWT 6.2 新版本

        QT 6.3.2  在线安装 搭配了 QtCreator 8.02(该Creator它由QT6.3.2 MSVC2019 X86_64构建的),在线安装,注意勾选MSVC 2019 编译器(Qt安装前本机已经安装VS2019环境以及路径Path都配置完成,QT自动识别系统中VS编程环境),以及安装可以按需勾选Mingw编译器,勾选外部Additonal library工具(多媒体模块等等,否则 qt multimedia 不能用)

安装新的QWT 6.2版本(最新版6.2支持>QT6.0),可以适配QtCreator 8.02,

【QWT插件 必须和QTCreator 同一版本编译器构建】。

QWT安装步骤(利用源码中的.pro文件),注意编译前的系列配置文件操作(参考链接),以及只能在release模式下编译。最后拷贝各个文件到QtCreator到对应目录下。【注意QWT需要匹配QtCreator版本和编译条件】,编译前需关闭部分注释,要参考链接:Qwt6.2笔记(一)之下载 编译 配置 - ;

自己项目:使用独立fftw3链接库和dlib链接库(use mkl blas编译版本)会冲突,编译dlib时候如果配置为MKL和BLAS等库,那么其中符号定义,则会与独立的fftw3.lib库里面函数或符号定义重名,编译不通过,因此 “独立的fftw3库”和“dlib+mkl库” 这二者取其一。

利用QT+MSVC2019编译项目代码时候,配置pro文件,注意debug与release的区分,否则会运行出错,release版本时候运行,如果链接了qwtd.dll(debug版本) 则出错。在自己项目使用QWT时候,配置pro文件,在MSVC release模式下,不能链接qwtd.lib库(因为是debug版本)

QT C++,链接库lib和dll最好放到同一目录下,以便后续项目的构建,
生成exe二进制程序直接动态链接 ,否则程序找动态库很麻烦

你可能感兴趣的:(c++,windows,矩阵,人工智能)