VS通过动态链接库调用MATLAB函数_visual studio 增加matlab 静态库-程序员宅基地

技术标签: c++  链接库  

VS通过动态链接库调用MATLAB函数


实际上,有两种调用方式,一种是通过在vs中通过engine来调用MATLAB函数,但是这种情况要通过cmd先打开MATLAB,使得MATLAB可以被vs所指挥。另一种就是这里将要介绍的方法,该方法在调用函数时,无需事先打开MATLAB。

将MATLAB函数编译为库

这是第一步,首先将需要使用的MATLAB 函数编译为链接库等文件。

  1. 在MATLAB命令行输入 mex -setup ,如图所示;

在这里插入图片描述
2.选择 C++那一个,如图所示;
在这里插入图片描述
3.在MATLAB命令行输入 mbuild -setup ,如图所示;
在这里插入图片描述
4. 还是选择 C++那一个,如图所示;
在这里插入图片描述
5. 在MATLAB命令行输入 mcc -W cpplib:Dataprocess -T link:lib Dataprocess.m (这里的Dataprocess就是自己需要编译成库的MATLAB函数的名称,以及转换成的库的名称),如图所示;
在这里插入图片描述
6. 回车之后,不会立马出现结果(此时在转换过程中),静候!一会就会出现如下结果;
在这里插入图片描述
7. 此时,即可查看MATLAB函数文件路径下已经出现了一堆文件,如图所示;
在这里插入图片描述

在VS中调用库

1.打开VS,新建空项目
2.配置项目环境,项目->属性->配置管理器,改成×64,如图所示;
在这里插入图片描述
3.VC++ 目录->包含目录,加入D:\MATLAB\matlab\extern\include路径
4.VC++ 目录->库目录,加入D:\MATLAB\matlab\extern\lib\win64\microsoft
5.链接器->输入->附加依赖项,添加libeng.lib;libmat.lib;libmex.lib;libmx.lib;mclmcrrt.lib;mclmcr.lib;Dataprocess.lib,(其中最后一个是刚刚MATLAB编译生成的其中一个)如图所示;
在这里插入图片描述
6.将MATLBA生成的.h和.lib和.dll三个文件复制到该项目的文件路径下,如图所示;
在这里插入图片描述
7.添加新建main.cpp文件,如图所示;

#include <string>
#include "Dataprocess.h"
using namespace std;

int main()
{
    
	if (!DataprocessInitialize());
	int updown = 1;
	char InputFile[] = "D:\data\PCDFile\LooseCoil-SVG5-SOR5-Up.txt";
	char OutPutFile[] = "D:\data\Features\OverflowEdgeCoil_Feature.txt";

	mwArray mwA_updown(1, 1, mxINT32_CLASS);

	mwA_updown.SetData(&updown, 1);

	mwArray mwA_InputFile(InputFile);
	mwArray mwA_OutputFile(OutPutFile);

	Dataprocess(mwA_InputFile, mwA_OutputFile, mwA_updown);

	return 0;
}

8.运行程序,即可完成函数的调用(注意mwArray的使用方法);

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/m0_37863231/article/details/106367697

智能推荐

毕业设计springboot宿舍管理系统-程序员宅基地

文章浏览阅读479次,点赞6次,收藏8次。1.1 研究背景近些年,随着中国经济发展,人民的生活质量逐渐提高,对网络的依赖性越来越高,通过网络处理的事务越来越多。随着宿舍管理的常态化,如果依然采用传统的管理方式,将会为工作人员带来庞大的工作量,这将是一个巨大考验,需要投入大量人力开展对宿舍管理等相关工作进行管理,单一且反复的操作容易出错且不易被察觉,工作人员对此风险并不能完全归避。利用现代信息技术,设计开发一款宿舍管理系统,能够极大的节省人力物力、提高工作效率、降低工作成本。1.2研究目的及意义。

【网络流24题----14】孤岛营救问题-程序员宅基地

文章浏览阅读94次。孤岛营救问题Time Limit:1 SecMemory Limit:128 MBDescription1944年,特种兵麦克接到国防部的命令。要求马上赶赴太平洋上的一个孤岛,营救被敌军俘虏的大兵瑞恩。瑞恩被关押在一个迷宫里,迷宫地形复杂,但幸好麦克得到了迷宫的地形图。迷宫的外形是一个长方形,其南北方向被划分为 N行,东西方向被划分为 M列,于是整个迷宫被划分为 N×M...

RDD 转化为 DataFrame_spark java rdd转dataframe-程序员宅基地

文章浏览阅读685次。DataFrame:读取和执行查询都会返回DataFrame,是一个由ROW 对象组成的RDD,附带包括每列数据类型的结构信息。ROW对象是支队基本数据类型的数组的封装。 ROW对象:表示DataFrame中的记录。本质是一个定长的字段数组。Spark将RDD转换成DataFrame的两种方式一、通过反射指定结构类型 通过反射的方式来推断RDD元素中的元数据。因为RDD本身一条数据本身是没有元数_spark java rdd转dataframe

科研工具篇|看完之后能提高你80%的科研工作效率_一般如何学习科研软件-程序员宅基地

文章浏览阅读3.7k次。荀子在《劝学篇》中讲到,”君子性非异也,善假于物也“。在生活中,善用各种工具能够极大的提高我们的效率,在科研工作中亦是如此。今天给大家介绍在科学研究和论文写作自己常用到的“七种武器”,有了它们,高质量的论文的写作将不再是一个难题。1、google scholar做文献调研是一件相当痛苦的事情,因为既要做到“准”,同时又要做到“全”。在常用的文献数据库中逐个去进行检索显然是一件费力不讨好的事..._一般如何学习科研软件

java 异步监听_【servlet3.0新特性】异步监听器实例-程序员宅基地

文章浏览阅读255次。异步监听器用来监听异步处理事件;即“三”中讲到的知识点;此监听器用户servlet3.0异步处理中,此监听器类似于ServletContextListener的机制;只需要实现AsyncListener接口即可;此接口有4个方法:public void onStartAsync(AsyncEvent event)throws IOException;public void onComplete(A..._servlet异步监听

fenix3 hr 中文说明书_佳明 Fenix3 HR中、英文菜单对照 V4.0-程序员宅基地

文章浏览阅读6k次。1.DataScreens数据页面2.Alerts警示/警示光2.WatchFace表盘1.Type类型3.Widgets小工具3.Metronome节拍器12.Timeout省电超时/待机超时/超时1.Apps应用程序1.Run跑步2.其他应用设置雷同略……系统自带的表盘和自己安装的在此处选择在此处设置系统自带和自己安装的小工具的显示或隐藏4.AutoLap自动计..._fenix3hr中文说明书

随便推点

Bootstrap使用插件时jQuery.min.js文件的导入方法_如何导入bootstrap的css和js文件、jquery文件-程序员宅基地

文章浏览阅读1.9k次。这几天在使用bootstrap框架的插件时突然忘记了jQuery文件时怎么导入的,接下来就详细讲解以下导入过程。_如何导入bootstrap的css和js文件、jquery文件

Java实现文件上传和下载的方法详解_用java实现文件的上传下载-程序员宅基地

文章浏览阅读4.2k次,点赞2次,收藏26次。参考文章:http://blog.ncmem.com/wordpress/2023/09/27/java%e5%ae%9e%e7%8e%b0%e6%96%87%e4%bb%b6%e4%b8%8a%e4%bc%a0%e5%92%8c%e4%b8%8b%e8%bd%bd%e7%9a%84%e6%96%b9%e6%b3%95%e8%af%a6%e8%a7%a3/编写文件上传的方法, 通过MultipartFile类型的参数即可接收上传的文件, 方法形参的名称需要与页面的file域的name属性一致。_用java实现文件的上传下载

MySQL分区管理-程序员宅基地

文章浏览阅读95次。以下是我看MySQL官方文档的时候整理的笔记,仅作参考保留。RANGE,LIST分区管理1:为未分区表创建分区ALTER TABLE trb3 PARTITION BY KEY(id) PARTITIONS 2;2:删除某个分区的数据ALTER TABLE tr DROP PARTITION p2;3:为分区表添加一个分区ALTE..._mysql分区权限

C语言中使用多线程播放游戏背景音乐_winform多线程音乐-程序员宅基地

文章浏览阅读3.7k次,点赞13次,收藏66次。做大一下期期末设计时遇到一个问题,游戏运行时循环播放背景音乐这个情况下,如果音乐播放完毕,加入判断函数判断是否结束,如果结束则重新播放,但是在游戏中,音乐播放完毕到音乐重新开始播放中间会有一个间隙,这个间隙游戏也会卡顿,主函数代码如下:int main(){ //初始化背景音乐 MUSIC bgm; bgm.OpenFile("res/music/bgm.mp3"); //设置屏幕刷新率 int nfps = 120; //初始化全局数据及图形 initgr(); //初始化启动页 _winform多线程音乐

若依前后端分离/微服务版怎样构造免密链接实现其他系统免登录访问_第三方通过地址跳转若依微服务版前端跳过登录页-程序员宅基地

文章浏览阅读2.5k次。场景若依前后端分离版手把手教你本地搭建环境并运行项目:若依前后端分离版手把手教你本地搭建环境并运行项目_BADAO_LIUMANG_QIZHI的博客-程序员宅基地上面在搭建起来前后端分离版的项目后,别的系统要实现通过跳链接的方式直接跳转到使用若依搭建的系统中从而不用登录就能访问系统。注:博客:BADAO_LIUMANG_QIZHI的博客_霸道流氓气质_程序员宅基地关注公众号霸道的程序猿获取编程相关电子书、教程推送与免费下载。实现1、效果2、若依前后端分离版与_第三方通过地址跳转若依微服务版前端跳过登录页

python-matplotlib绘制堆积的条形图-程序员宅基地

文章浏览阅读3.3k次。import matplotlib as mplimport matplotlib.pyplot as pltx=["a","b","c","d","e","f"]y=[2,3,6,7,9,5,]y1=[5,8,9,3,4,6,]plt.xlim(0,20)plt.barh(x,y,align="center",color="r",label="y")plt.barh(x,y1,left..._matlibplot 堆积条形图

推荐文章

热门文章

相关标签