Matlab生成dll文件笔记

非教学,失败案例。

1 下载MinGW64 C/C++编译器

下载链接:https://sourceforge.net/projects/mingw-w64/files/
百度云下载链接:链接:https://pan.baidu.com/s/11erb1P3KLAFD1UxCJIZ8Tw?pwd=jvh6
提取码:jvh6
1、点击Files
在这里插入图片描述

2、向下拉,直到下图,点击x86_64_win32_sjlj。(我使用的MATLAB为R2019a,使用6.4.0版能正常安装。)
在这里插入图片描述
3、下载后解压到的文件夹需要保证没有空格!上级文件夹也不能包含空格!Program Files都不行。
在这里插入图片描述
4、添加系统环境变量:
(1)右键我的电脑->属性。
在这里插入图片描述

(2)点击高级系统设置。
在这里插入图片描述

(3)点击:高级,环境变量。
在这里插入图片描述

(4)点击系统变量,新建:
在这里插入图片描述
一直确定就行。

2 Matlab安装配置

matlab命令行内输入:

setenv('MW_MINGW64_LOC','C:\mingw64')
mex -setup
mex -setup c++

在这里插入图片描述

3 编译测试

写一个.m函数,只有函数(function)能编译生成dll/lib/c/h文件。
在这里插入图片描述
test_func.m

function [add,minus] = test_func(num1,num2)
    add = num1 + num2;
    minus = num1 + num2;
end

保存后在该文件夹下,命令行输入:

mcc -W cpplib:test_func -T link:lib test_func.m -C

解释:
-W是控制编译之后的封装格式;
-T表示目标,link:lib表示要连接到一个库文件的目标,目标的名字即是.m函数的名字。
其他具体含义可以通过mcc –help命令查看,注意参数的大小写。
在这里插入图片描述
进入文件夹,可以看见编译生成了dll/lib/c/h文件。
在这里插入图片描述

4 另外一种编译方法

命令行输入:

mbuild -setup
mex -setup C++ -client MBUILD
deploytool

等待弹出窗口,点击Library Compiler
在这里插入图片描述
按照下图,点击C++ Shared Library,点击加号+,可以看到底部的四个将要生成的文件,点击Package,点击确定
在这里插入图片描述

运行完成后,生成一个.prj文件和一个文件夹,文件夹内:

文件路径:
test_func.m
test_func.prj
test_func
			- for_redistribution
									- MyAppInstaller_web.exe
			- for_redistribution_files_only
									- v2
									- test_func.dll						*****
									- test_func.h						*****
									- test_func.lib						*****
									- GettingStarted.html
			......

打星号*****的文件就是需要用到的。

5 这dll用不了啊!!

将test_func.h、test_func.dll、test_func.lib复制到Qt的工程目录下,在pro文件下添加各种matlab文件路径,然后在main.cpp文件下使用.h文件内的函数,但编译一直不通过!!!不是文件找不到,就是权限被阻止。


参考链接:
https://www.cnblogs.com/zzzsj/p/14630559.html

猜你喜欢

转载自blog.csdn.net/qq_45362336/article/details/130684967
今日推荐