非教学,失败案例。
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文件内的函数,但编译一直不通过!!!不是文件找不到,就是权限被阻止。