MATLAB下配置C和C++编译器(MinGW)

2023-11-16

很多时候需要在Matlab下使用C或C++边写的代码,这时候就需要先用编译器将代码编译成Matlab可以用的mex文件。检测Matlab有没有可以使用的编译器,可以在命令行窗口下,输入mex -setup,如果有的话就会显示出可以用的编译器。

无编译器:
在这里插入图片描述有编译器:
在这里插入图片描述
(如果针对matlab,个人推荐方法二,方便快捷)

方法一

(前两步不仅仅适用于MATLAB)

1.安装包下载

方法一:下载Installer在线安装(费时)

方法二:下载离线包(较快)
由于在线安装方式下载较慢,所以可以选择直接下载离线包。

点击此链接:https://sourceforge.net/projects/mingw-w64/files/,进入下图1后将页面往下滑到图2区域,点击所需离线包名称(参照下图),然后就会弹出图3所示对话框,保存下载即可。离线包大约50MB(解压后500MB左右)。
在这里插入图片描述

在这里插入图片描述在这里插入图片描述
在这里插入图片描述下载完成解压后的界面是这样的:
在这里插入图片描述

2.环境变量配置

如果下载完成后就进入Windows的命令窗口再次键入gcc,仍会是本文第一张图那样的提示。原因就在于还缺少系统环境变量配置这一环节。

右键计算机→属性→高级系统设置→高级→环境变量,然后鼠标双击系统变量中Path,或者选中后点击编辑,在变量值输入框的末尾输入英文分号后将MinGW-w64包目录下bin文件夹的全路径粘贴到后面,bin的后面有无斜杠均可,如下图:
在这里插入图片描述此时再进入Windows的命令窗口键入gcc -v,将是另一番景象~~~
在这里插入图片描述

3.MATLAB下配置C和C++编译器(MinGW)

但是此时Matlab下还是没有可以使用的编译器
在这里插入图片描述
进行环境变量配置,右键计算机选择“属性——高级系统设置——高级——环境变量”,点击“环境变量”;在系统变量下面,选择“新建”;(位置为安装路径bin目录(eg:D:\software\MinGW-w64\bin)
在这里插入图片描述设置完环境变量后,Matlab还是找不到MinGw编译器的,需要在Matlab中运行如下代码:

setenv('MW_MINGW64_LOC','folder')
比如:setenv('MW_MINGW64_LOC','D:\software\MinGW-w64')//目录为bin的上一级目录

此时执行>> mex -setup
会发现Matlab可以找到已经安装的编译器了。
在这里插入图片描述
注意:如果每次重启Matlab后还是没有发现编译器,而且每次都要重新编译,此时就要看看MinGW的安装目录是不是空格,很多人默认安装在C:\Program File\下,结果就运行不了,因为这其中有空格,此时有两种方法可以解决,第一种就是重新安装到没有空格的文件夹里面,当然这得重新安装,比较麻烦;第二种就是,直接在环境变量那里,把Program File改为Progra~1,即可。

方法二

虽然无报错,但是有警告信息:提示编译器版本不支持,所以又进行了下述操作:

1.matlab主页→附加功能→获取附加功能
在这里插入图片描述2.找到MinGW-w64
在这里插入图片描述3.点击右下角安装即可(我这里已安装所以未显示)在这里插入图片描述

问题“MEX文件无效,找不到指定模块”解决

然而,虽然输出mex -setup未报错,但在运行时出现下述错误:MEX文件无效,找不到指定模块
在这里插入图片描述尝试了网上的建议:将“SDK_PATH\bin”添加到PATH环境变量中,以帮助编译器查找需要的.dll文件,例如添加";C:\myo-sdk-win-0.9.0\bin" 到系统变量,然而仍然报错。
解决方案:将dll文件与myomex文件夹中的.cpp .h放在同一文件夹中,.cpp .h和.dll放在不同的文件夹下,在.cpp中使用.h .dll都是使用的相对路径,通过mex test.cpp编译是可以成功的,但是在调用的时候就会出问题。(原因未知)
在这里插入图片描述
在这里插入图片描述

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

MATLAB下配置C和C++编译器(MinGW) 的相关文章

  • 来,看看这20个常用的宏定义!

    关注 星标公众号 直达精彩内容 ID 技术让梦想更伟大 作者 李肖遥 写好C语言 漂亮的宏定义很重要 使用宏定义可以防止出错 提高可移植性 可读性 方便性等等 下面列举一些成熟软件中常用的宏定义 1 防止一个头文件被重复包含 1 ifnde
  • 32位 与64位编译

    为了适应现在越来越流行的64位系统 经常需要将代码分别编译为32位版和64位版 其次 除了需要生成debug版用于开发测试外 还需要生成release版用于发布 本文介绍了如何利用makefile条件编译来生成这些版本 而且不仅兼容Linu
  • C语言头文件路径相关问题总结说明

    聊聊系统路径位置 绝对路径与相对路径 正斜杠 与 反斜杠 使用说明 by 矜辰所致 目录 前言 一 C语言中的头文件引用 二 KEIL 中的头文件路径 2 1 IncudePaths 指定的路径 绝对路径和相对路径 正斜杠 与 反斜杠 与双
  • 复制构造函数(拷贝构造函数)

    也许很多C 的初学者都知道什么是构造函数 但是对复制构造函数 copy constructor 却还很陌生 对于我来说 在写代码的时候能用得上复制构造函数的机会并不多 不过这并不说明复制构造函数没什么用 其实复制构造函数能解决一些我们常常会
  • 关于C++ const 的全面总结

    C 中的const关键字的用法非常灵活 而使用const将大大改善程序的健壮性 本人根据各方面查到的资料进行总结如下 期望对朋友们有所帮助 Const 是C 中常用的类型修饰符 常类型是指使用类型修饰符const说明的类型 常类型的变量或对
  • 如何将二维数组作为函数的参数传递

    如何将二维数组作为函数的参数传递 今天写程序的时候要用到二维数组作参数传给一个函数 我发现将二维数组作参数进行传递还不是想象得那么简单里 但是最后我也解决了遇到的问题 所以这篇文章主要介绍如何处理二维数组当作参数传递的情况 希望大家不至于再
  • Explicit 关键字简介

    Explicit 关键字简介 explicit关键字用来修饰类的构造函数 表明构造函数是显示的 相对的是implicit关键字 首先这个关键字只能用在类内部的构造函数声明上 而不能用在类外部的函数定义上 它的作用是不能进行隐式转换 clas
  • 开源静态代码检测工具Splint

    如果想用一个有效的工具察看C C 源代码中的错误 遗漏 不确定的构建过程 以及移植问题等等 你应该来看看Lint 可以把Lint当成一个编译器 除了不产生代码之外 对于错误和警告的报告来说已经非常足够了 通常 一个C C 的编译器假设程序是
  • CGAL的简介及安装设置

    一 CGAL库的介绍 CGAL Computational Geometry Algorithms Library 库 计算几何算法库 是一个大型的C 几何数据结构和算法库 包含Delaunay三角网 网格生成 布尔运算的多边形 各种几何处
  • YACC工具ParserGenerator的下载和配置过程

    工具准备 parser generator http www bumblebeesoftware com downloads htm VC6 0 网上到处都是 1 parser generator的环境设置 安装好parser genera
  • 条件编译小结

    编码的时候经常要用到条件编译 每次都到网上去查比较浪费时间 今天总结一下以备后用 编译器 GCC ifdef GNUC if GNUC gt 3 GCC3 0以上 Visual C ifdef MSC VER 非VC编译器很多地方也有定义
  • 【C++基础学习】引起类模板被实例化情形总结

    在我们使用类模板时 只有当代码中使用了类模板的一个实例的名字 而且上下文环境要求必须存在类的定义时 这个类模板才被实例化 并不是每次使用一个类都要求知道该类的定义 1 声明一个类模板的指针和引用 不会引起类模板的实例化 因为没有必要知道该类
  • gcc- -O 优化选项

    查查gcc手册就知道了 每个编译选项都控制着不同的优化选项 下面从网络上copy过来的 真要用到这些还是推荐查阅手册 O设置一共有五种 O0 O1 O2 O3和 Os 除了 O0以外 每一个 O设置都会多启用几个选项 请查阅gcc手册的优化
  • 在ubuntu里面安装交叉编译工具(树莓派的)

    交叉编译是什么 为什么要交叉编译 交叉编译 是在一个平台上生成另一个平台上的可执行代码 我们再windows上面编写C51代码 并编译成可执行代码 如xx hex 是在c51上面运行 不是在windows上面运行我们在ubuntu上面编写树
  • c++ 常见编译错误

    1 redefinition of class previous definition of class 表示重复定义了类 一般说来是因为在你进行该类定义的头文件中没有使用 ifndef define和 endif来进行保护 如果你确定你在
  • 从编译器角度分析C语言中数组名和指针的区别

    数组名和指针是两个往往很容易让人们混淆的概念 很多人以为数组名就是一个指针 也有很多人知道数组名不同于指针但是仅知道数组名的值不能像指针一样改变 例如你可以写出下面这样的代码 int p p 却不能写这样的代码 int a a 那么数组名跟
  • 为什么C++编译器不能支持对模板的分离式编译

    为什么C 编译器不能支持对模板的分离式编译 刘未鹏 pongba C 的罗浮宫 http blog csdn net pongba 首先 一个编译单元 translation unit 是指一个 cpp文件以及它所 include的所有 h
  • 《程序员的自我修养——链接、装载与库》

    先不说别的 就单看书名就知道是什么意思了 作者的意思是想 演员的自我修养 的作者 斯坦尼斯拉夫斯基 致敬 老斯的那本书我没看过 但我看这本书的意思就是培养程序员的基本素质 你说啥叫基本素质 那就是你能够了解你编写的程序的任何一个运行的细节
  • llvm之IR设计

    llvm之IR设计 引言 1 逻辑关系 2 class Module 3 class IRBuilder 4 class Instruction 5 class Constant 6 class Function 引言 llvm IR是ll
  • C++头文件

    作为一个二手的 net程序员 你看到了C 头文件一定就犯迷糊了 这到底是个啥玩意 再我纠结了24个小时 google20次 度娘10下 看过10来骗文章以后 我可能稍微开窍了 我对C 头文件总结 与 net比较如下 一 C 头文件究竟是什么

随机推荐

  • 【软件测试】备战秋招,数家公司的面经合集整理,总有一家你愿意去的,还不来赶紧学点经验。

    面经 前言 华为测试工程师 笔经 技术一面 技术二面 主管面 结果 大华测试 一面 二面 过了一两个小时就接到了 三面 下午3点接到hr电话 结果 中科创达 笔试 一面 技术面 二面 hr面 结果 恒生测试 安硕测试 恒生 安硕测试 深信服
  • java实现高校教务管理系统(带论文)

    xia基于java实现的高校教务管理系统 带论文 演示地址 教务系统登录 用户名 123456 密码 123456 论文 登录 学生管理 课程管理 学院管理 专业管理 下载地址 基于java实现的高校教务管理系统 带论文 源码世界
  • 以太坊私有链搭建

    https blog csdn net wxb880114 article details 79202378 以太坊私有链搭建
  • 包含中文的properties文件,第一行要空出来

    项目的配置文件中包含了中文 文件的编码格式为UTF 8 当读取properties文件时第一个Key总是失败 后面的Key则正常 Properties类API http docs oracle com javase 7 docs api j
  • setsockopt用法详解

    本文转载于 https www cnblogs com baiduboy p 8127913 html 最近做的一个程序用到了IOCP通信模型 里面用到了setsockopt对套接字进行设置 看源代码的时候最setsockopt函数很不理解
  • windows下用cygwin编译android版ijkplayer

    http blog csdn net ytzys article details 47302123
  • 向服务器请求数据的五种技术

    Ajax 在它最基本的层面 是一种与服务器通讯而不重载当前页面的方法 数据可从服务器获得或发送给服务器 有多种不同的方法构造这种通讯通道 每种方法都有自己的优势和限制 有五种常用技术用于向服务器请求数据 1 XMLHttpRequest X
  • 怎么解决ZBrush保存历史记录太多问题

    经常有用户反映说ZBrush 保存历史记录太多了 导致文件太大了 模型已经是降低级别保存了 在保存历史记录的时候还是很慢很慢 不知道怎么才能减少ZBrush保存的历史步骤的多少 针对这一问题 小编统一解答一下 造成保存历史记录过多的原因 当
  • 使用Python,OpenCV进行形态学操作

    使用Python OpenCV进行形态学操作 1 效果图 2 原理 3 源码 3 1 制作logo源码 https blog csdn net qq 40985985 article details 116025825 3 2 腐蚀膨胀打开
  • uni-app分享微信好友,朋友圈

    1 在mixin文件夹中创建一个 share js文件 export default data return 默认的全局分享内容 share title path 全局分享的路径 imageUrl 全局分享的图片 desc 定义全局分享 1
  • 【无人机】基于灰狼优化算法的无人机路径规划问题研究(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码实现 1 概述 随着各种新兴技术的发展 无人机在灾后救援
  • 数据挖掘按技能划分,主要分为几类?

    数据挖掘技能从起初的单一门类的知识逐步发展成为一门综合性的多学科知识 并由此产生了很多的数据挖掘方法 这些方法种类多 类型也有很大的差别 为了满足用户的实际需要 现对数据挖掘技能进行如下几种分类 按挖掘的数据库类型分类 利用数据库对数据分类
  • 使用Chrome浏览器自带命令对web页面进行截图,生产高质量图片

    在平时工作中 我们对浏览器的web页面截图有很多方法 无论是Windows还是Mac操作系统 都自带截图工具 但是 如果我们打开的web页面非常的大 我使用操作系统自带的截屏工具就力不从心了 因为我们的显示屏幕不能显示web页面的所有内容
  • react时间戳转换成需要格式

    后端返回前端日期时间 一般给你的都是时间戳 然后前端展示需要转换成需要格式 以下是我开发中常遇到需要转换成的格式 看代码 class DateApi 将输入的毫秒字符串or毫秒数转换成指定的字符串格式 param string msStr
  • 代码圈复杂度cogC、ev、iv、v分别是什么含义

    代码圈复杂度cogC ev iv v分别是什么含义 前言 cogC ev iv v分别是什么含义 优化这四个指标的好处 优化方法 过度优化的坏处 书本推荐 文章推荐 工具推荐 前言 你好 在工作中看项目的代码有时明明代码很长却觉得容易阅读
  • 未能加载文件或程序集“office, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c”或它的某一个依赖项。拒绝访问

    未能加载文件或程序集 office Version 15 0 0 0 Culture neutral PublicKeyToken 71e9bce111e9429c 或它的某一个依赖项 拒绝访问 原因 office2013资源 原因 是因为
  • LeetCode基础-图-有向图-最短路径

    最短路径 从图中的一个顶点到另一个顶点的成本最小的路径 单点最短路径 在加权有向图中 给出一个起点 s 找到是否有一条到顶点 v 的路径 如果有 找出权重最小的那条 最短路径的性质 路径是有向的 权重不定表示距离 并不是所有顶点都是可达的
  • 【Javascript】数组拼接的两种方法

    数组拼接的两种方法 1 改变原数组 1 push 扩展运算法 1 不改变原数组 1 concat 2 扩展运算符 1 改变原数组 1 push 扩展运算法 利用push搭配扩展运算符的方法 arr2经过扩展运算符 由 3 4 5 变成3 4
  • 博途V11.0中如何编程模拟量转换步骤

    https blog csdn net u011402289 article details 90041534
  • MATLAB下配置C和C++编译器(MinGW)

    很多时候需要在Matlab下使用C或C 边写的代码 这时候就需要先用编译器将代码编译成Matlab可以用的mex文件 检测Matlab有没有可以使用的编译器 可以在命令行窗口下 输入mex setup 如果有的话就会显示出可以用的编译器 无