VisualStudio配置与Matlab混合编译问题总结

2023-05-16

VisualStudio配置与Matlab混合编译问题总结

写这篇博客记录一下自己在配置过程中遇到的种种问题,也做一个小小总结,试图把整个过程讲明白,希望对面临同样问题的人有所帮助。网上此类教程很多,最好是能有个引导,出现什么问题应该看什么,怎么看。

一.适用情况

个人是编写C++程序中(MFC程序)需要用到Matlab用于绘图和Matlab中的一些计算操作,因此通过如下引擎调用Matlab。配置版本为VS2022与Matlab2017a。

#include "engine.h"

二.过程中遇到的问题-Matlab

1.版本不适配

如何看自己的matlab是否支持VS版本?

参考这位博主:(3条消息) 低版本Matlab(2020b)与高版本Visual Studio(VS2022)实现M、C/C++混合编程(调试)_matlab与vs混合编程_读书人不偷东西的噢!的博客-CSDN博客

我遇到的问题主要是低版本的matlab不支持高版本的VS,因此需要进行配置版本文件的修改。

在matlab的Command Window中输入

mex -setup

在输入命令后,Matlab询问选择时选C++,完成matlab编译器设置,自此Matlab问题解决。

(其实Matlab是没怎么遇到问题的,主要还是VS)

三.过程中遇到的问题-VisualStudio

1.项目属性修改

打开项目-属性,进行属性配置,主要是添加一些Matlab环境以便混合编译。

这里附上我的属性配置(不同的版本和安装时的设置,可能会导致路径上有细微差别,我记得我配置时大体上是可以对上的)。

在这里插入图片描述

在这里插入图片描述

要注意的是,无法正常运行也有可能是预处理器定义这里出现问题,比如是console程序还是windows等等,需要分清。以及程序到底是用的win32还是x64也要知道,不然也许会出错。
在这里插入图片描述

重启生效,预备工作做完,具体不赘述。

2.遇到的问题
在这里插入图片描述

在这里插入图片描述

诸如此类,这是表明需要的动态链接库找不到(还有icuio44.dll、icudt44.dll等等)。

最开始想到的是缺什么库就补什么,直接在网站上对应下载,然后装进matlab对应的dll所在的路径。注意,网上内容质量参差不齐,最好自己记录下都安了什么进去,别稀里糊涂到最后想删都不知道删哪个。

对应的应该是XXXX/Matlab2017a/bin/win64(以我的举例)


题外话:这里注意,有很多教程直接说装在系统文件夹下,如

WIndows/System32文件夹对应64位的dll文件

sysWOW64文件夹对应32位的dll文件等等

个人觉得是很容易弄错的,而且网上资料繁杂,也很难说你下载的到底是32位还是64位的dll。(如果不得已要试试这种方法:详见这位大佬(3条消息) 如何判断一个dll/exe是32位还是64位?(两种方法)_怎么知道dll是32位_c#上位机的博客-CSDN博客)

这里是不推荐的,因为系统里的东西其实还是最好不要动,牵涉广泛,没准哪天用别的东西,就因为你系统文件夹里东西删删减减而用不了了,又要解决新问题,多一事不如少一事。


接着上面讲:

如果还不行,尝试这位博主的:

(3条消息) 提示找不到libmat.dll文件的解决方法_LeonSUST的博客-CSDN博客

添加系统的环境变量,进行尝试。

对于我个人的情况,是没有用这一步的。安装上对应的库之后,情况变成了

应用程序无法正常启动(0xc000007b)

很明显上面的问题是治标不治本的,还是dll的依赖没有处理好,处理到现在也很焦头烂额了。也尝试了用directX修复,强力修复等等,均是无果。

建议,如果是有可以编译运行的程序而不是直接是可执行文件exe的话试着编译一下,参看:

(3条消息) VS(Visual Studio)应用程序无法正常启动(0xc000007b)解决办法大全_vs打不开_城市灬边缘的博客-CSDN博客

这位博主。调试运行库,让VS进行提示,我发现有个库加载了很多次,每次都卡在那里,然后就出bug。需要进行dll替换。

因此合理推断,也许是dll库本身出现了问题,需要进行替换

注意,如果真是这一步出现了问题,它提示哪个dll库有问题,率先查是否不存在这个库,或者存在这个库,但内容可能不对。这时就最好不要乱从网上下载了。我是在Matlab中找到了对应的库(或者在VS的dll里翻翻),把对应的库直接替换进去。

这样应该就没问题了。

测试代码详见:

(3条消息) C++通过engine引擎调用matlab_山有木兮°的博客-CSDN博客

应该是可以直接运行成功,不需要进行任何修改。

第一次发博客,引用了上面几位博主的内容,对遇到的问题进行梳理,如有侵权联系我,会及时删除。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

VisualStudio配置与Matlab混合编译问题总结 的相关文章

随机推荐

  • 串口中断收发定长数据

    一 实验设计效果 配置串口助手波特率为115200 xff0c 传输数据长度为8 Bit xff0c 无奇偶校验位 xff0c 1个停止位 xff1b 通过串口助手向MCU发送指定长度的字符串 xff0c MCU接收到指定长度的字符串后 x
  • Qt 中C++ async实现并行处理

    在项目中 xff0c 难免遇到性能问题 xff0c 为了提高处理的性能 xff0c 针对可以并行处理的部分单独提取出来 xff0c 利用并行编程来提高处理的速度 xff0c 从而实现高性能 C 43 43 11中有一个async 函数 xf
  • 深度学习环境入门之手写数字识别

    在自己的windows环境下配置好了深度学习的环境 xff0c 本文主要记录一下用深度学习的环境下实现一个简单的手写数字识别的模型训练和使用 1 在pycharm中配置conda环境 xff1a 环境配置好以后 xff0c 可以开始手写数字
  • 算法之KMP算法 全新思路介绍!

    KMP算法是一个经典的字符串匹配算法 xff0c 也是一种常用的字符串匹配算法 在KMP算法没出现之前 xff0c 大家在字符串匹配的时候 xff0c 都是两个for循环嵌套完成字符串之间的匹配 这种算法称作 BF算法 xff08 暴力求解
  • c++ linux utf-8 编码 中文汉字分割(超简单代码)

    UTF 8 编码对于英文字母 xff0c 占用一个字节 xff1b UTF 8 编码对于中文字母 xff0c 占用多个字节 xff0c 最大占用6个字节 xff0c 其中第一个字节二进制的最高位连续1的个数来表示占用字节的个数 xff0c
  • 算法之并查集

    并查集 xff0c 顾名思义 xff0c 就是合并不同的集合 xff0c 并查集是一种集合合并和查找算法 这是一种思想很奇妙的算法 xff0c 学会它 xff0c 在你后续的程序学习中可以有很多的可以用的地方 什么是并查集 xff1f 举个
  • 算法之主成分分析PCA详解(包含理论推导和代码)

    1 PCA介绍 主成分分析算法 xff08 Principal Component Analysis xff09 简称PCA xff0c 是一种常用的统计方法 该方法对高维的数据进行筛选 xff0c 选出最具有代表性最重要的的几维数据 xf
  • linux 命令行进行桌面图标的打开

    近期在处理一个需求 xff0c 需要在代码中打开桌面的某个图标 xff0c 因此 xff0c 做了一些搜索 xff0c 最终发现 xff0c 有两个比较好用的命令 xff0c 下面来讲解一下 1 gtk launch 在linux系统一般已
  • 算法之滑动窗口寻找最长无重复字符串

    今天无聊的时候刷了一道leetcode的题目 xff0c 给定字符串 xff0c 查找最长无重复字符串 xff0c 具体题目信息如下 xff1a 给定一个字符串 s xff0c 请你找出其中不含有重复字符的 最长子串 的长度 示例 1 输入
  • 算法之图解单纯形算法C++

    在之前的算法博客中 xff0c 结合案例和算法的图形表示 xff0c 获得了较多同学的好评 xff0c 例如之前写的迪杰斯特拉算法这篇博客 xff0c 能够让很多新同学和老同学通过直观的方式去理解算法求解的过程 xff0c 这样理解起来会比
  • linux opencv打开两个USB摄像头

    在ubuntu linux系统下 xff0c 摄像头设备是通过 dev videox来表示的 xff0c 如果只有一个摄像头 xff0c 则会在 dev目录下显示 video0和video1两个设备 xff0c 其中 xff0c video
  • 实现手机app和微信小程序远程控制加人体探测自动化控制51单片机打开流水灯(ESP8266 STC89C52RC http请求转串口通信系统)

    首先你有这样的8266 这种8266自身带2个按键和烧录芯片方便调试 xff0c 综合性价比较高 有一个51单片机 或者其他芯片都行 还有就是需要这种人体红外探测模块和led灯 有了这2个芯片我们开始吧 xff01 1 先看一段视频效果演示
  • 图像算法之图像平移

    在图像处理领域中 xff0c 图像变换是最基本的算法 xff0c 本文主要详细分享一下图像平移算法的原理和代码实现 xff0c 废话不多说 xff0c 直接上干货 1 图像平移的原理 在计算机图像中 xff0c 主要是用的是 像素直角坐标系
  • OpenCV之Mat的详细介绍

    在opencv中 xff0c Mat作为图像的存储容器 xff0c 是非常基础也是非常重要的知识 xff0c 本文主要介绍Mat相关的操作 1 图像复制 再开始将拷贝之前 xff0c 先给大家分享一下浅拷贝和深拷贝 浅拷贝 xff1a 拷贝
  • windows下Linaro-arm-linux编译开启NEON的Opencv源码详细过程

    环境配置 1 windows安装cmake 下载地址 xff1a https cmake org download 按照上图中的下载cmake的安装包 xff0c 安装注意事项如下 xff1a 安装路径切记不能包含空格 xff01 xff0
  • Windows 工具之net

    net 是windows平台下用户管理的工具 xff0c 可以来添加 xff0c 删除和修改用户 1 创建用户 xff1a win 43 R 输入cmd xff0c 然后打开命令行窗口 xff0c 输入下面的命令 xff1a net use
  • windows平台相关命令收集

    1 获取IP地址命令 xff1a ipconfig 2 获取MAC地址命令 xff1a ipconfig all 3 查看所有端口信息 netstat nal findstr 8080
  • C/C++中比较好用的HTTP开源库

    以下是一些常用的C C 43 43 开源HTTP库及其对应的开源协议和链接 xff1a 1 libcurl xff1a 使用MIT X开源协议 xff0c 支持多种协议和多种数据传输方式 xff0c 被广泛应用于各种开发场景 官网链接 xf
  • 为Ubuntu网页设置稳定的数据隧道

    网站作为互联网世界中的一个个门户 xff0c 是我们对外表达的窗口 xff0c 无数个人和企业通过这个窗口传递着信息 xff0c 这个传递信息的窗口必须稳定持续存在 xff0c 才能让更多访客看到 xff0c 为我们带来更多的流量 而使用c
  • VisualStudio配置与Matlab混合编译问题总结

    VisualStudio配置与Matlab混合编译问题总结 写这篇博客记录一下自己在配置过程中遇到的种种问题 xff0c 也做一个小小总结 xff0c 试图把整个过程讲明白 xff0c 希望对面临同样问题的人有所帮助 网上此类教程很多 xf