IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> VS2019中配置Matlab Engine -> 正文阅读

[C++知识库]VS2019中配置Matlab Engine

环境:
Matlab R2018
vs 2019 社区版

项目配置一览

  1. windows下所需的库1
    路径:
    {matlabroot}\extern\lib\win64\compiler\mingw\下的

    • 引擎库
      libMatlabEngine.lib

    • Matlab数据数组库
      libMatlabDataArray.lib

  2. Matlab Engine 头文件
    路径: {matlabroot}\extern\include 下的

    • C++引擎API定义
      MatlabEngine.hpp
    • MATLAB 数据数组的定义
      MatlabDataArray.hpp

{matlabroot}是在matlab命令行下"执行命令matlabroot"的运行结果,请务必更换掉

使用VS项目sln配置

简洁的操作流程

  • 配置头文件:
    项目属性->VC++目录->外部包含目录中添加路径{matlabroot}\extern\include
  • 配置库文件
    • 设置库目录
      项目属性->VC++目录->库目录中添加路径{matlabroot}\extern\lib\win64\compiler\mingw64
    • 添加设置依赖项
      项目属性->链接器->附加依赖项中添加libMatlabDataArray.liblibMatlabEngine.lib

测试代码:

使用以下代码2,测试刚刚搭建的项目是否成功。

#include "MatlabDataArray.hpp"
#include "MatlabEngine.hpp"
#include <iostream>
void callSQRT() {

    using namespace matlab::engine;

    // Start MATLAB engine synchronously
    std::unique_ptr<MATLABEngine> matlabPtr = startMATLAB();

    //Create MATLAB data array factory
    matlab::data::ArrayFactory factory;

    // Define a four-element typed array
    matlab::data::TypedArray<double> const argArray =
        factory.createArray({ 1,4 }, { -2.0, 2.0, 6.0, 8.0 });

    // Call MATLAB sqrt function on the data array
    matlab::data::Array const results = matlabPtr->feval(u"sqrt", argArray);

    // Display results
    for (int i = 0; i < results.getNumberOfElements(); i++) {
        double a = argArray[i];
        std::complex<double> v = results[i];
        double realPart = v.real();
        double imgPart = v.imag();
        std::cout << "Square root of " << a << " is " <<
            realPart << " + " << imgPart << "i" << std::endl;
    }
}

int main() {
    callSQRT();
    return 0;
}

题主额外的遭遇

  • 编译中总是提示无法识别的符号
    可以通过项目->属性->C/C++->语言中关掉符合模式3

  • 运行时找不到libMatlabDataArray.dll
    然而借助Everythings搜索工具,查到该文件就在{matlabroot}\extern\bin\win64{matlabroot}\bin\win64中 😃

    在VS中设置=> 项目->属性->调试->环境, 添加如下

    PATH = {matlabroot}\extern\bin\win64
    

    或是

    PATH = {matlabroot}\bin\win64
    

再次提醒: {matlabroot}是在matlab命令行下"执行命令matlabroot"的运行结果,请务必更换掉


使用CMake构建

使用CMake构建就直白多了。

cmake_minimum_required (VERSION 3.8)

project ("CMakeProject")

# 设置C++标准
set(CMAKE_CXX_STANDARD 14)

# 设置Mallab根目录(即安装目录)
set(Matlab_ROOT_DIR  "D:/tools/matlab")

# 添加头文件目录
include_directories(${Matlab_ROOT_DIR}/extern/include)

# 调试输出所有包含的目录
get_property(dirs DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY INCLUDE_DIRECTORIES)
foreach(dir ${dirs})
        message(STATUS "Included Directory is: '${dir}'")
endforeach()

# 添加库目录
link_directories(${Matlab_ROOT_DIR}/extern/lib/win64/mingw64)

# 生成可执行文件
add_executable (${PROJECT_NAME} 
    CMakeProject.cpp
)

# 链接相应的lib
target_link_libraries(${PROJECT_NAME}
    libMatlabDataArray
    libMatlabEngine
)

更多

如果是Linux上的用户可以参考以下链接


  1. Build C++ Engine Programs —— MathWorks HelpCenter ??

  2. Test Your Build Environment —— MathWorks HelpCenter ??

  3. Error with Matlab Engine/Data API for C++ (EDIT: Resolved) ??

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-12-15 18:05:37  更:2021-12-15 18:06:06 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 12:46:14-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码