在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
环境: Win10 vs2010 Matlab2015 里面有很多选做的内容,其中2、3必做 1.Matlab环境设置: (选做)我没有做这步,因为打mbuild -setup指令不识别,缺少SDK,但是可以正常调用Matlab,这步是其他方式调用Matlab中的一步,使用Matlab生成DLL文件,VS引用 要建立独立运行的C应用程序,系统中需要安装Matlab、Matlab编译器、C/C++编译器以及Matlab C/C++数学库函数和图形库函数。 在 Matlab 的Command Window 下输入命令。 mbuild – setup 操作过程如下图: 然后输入命令 mex – setup 以类似的方法配置编译器。Matlab 的配置完成。 2.VS环境设置 (必做) (1)设置Include 和Library 目录 项目右键->属性->VC++目录->包含目录:添加 <MATLAB>\R2010b\extern\include\win64 我的是:D:\RUANJIAN\Matlab\extern\include\win64 <MATLAB>\R2010b\extern\include\ 我的是:D:\RUANJIAN\Matlab\extern\include 项目右键->属性->VC++目录->库目录:添加 <MATLAB>\R2010b\extern\lib\win32\microsoft 我的是:D:\RUANJIAN\Matlab\extern\lib\win64\microsoft <MATLAB>\R2010b\extern\lib\win64\microsoft 截图: :
(2)设置工程目录: ( 我并没有设置) 项目右键->属性->C/C++->常规->附件包含目录:添加 <MATLAB>\R2010b\extern\include\win64 <MATLAB>\R2010b\extern\include\ 项目右键->属性->链接器->常规:添加 <MATLAB>\R2010b\extern\lib\win32\microsoft <MATLAB>\R2010b\extern\lib\win64\microsoft 项目右键->属性->链接器->输入->附件依赖性:添加 (必做) libeng.lib 注:1.lib文件包含在<MATLAB>\R2010b\extern\lib\win64\microsoft,可根据需要增减 2.附件依赖性在VS2010前以空格隔开,在VS2010后使用;隔开。 截图:
我的截图:
项目右键->属性->链接器->高级->目标计算机:更改(只针对64位WINDOWS) (选做) MachineX86 -> MachineX64 注:分析原因为MATLAB根据计算机平台选择了X64编译环境,如此处不修改会出现 错误3 (3)配置管理器设置(只针对64位WINDOWS) (必做) 生成->配置管理器->平台:更改 Win32->X64 注:分析原因为配合链接器中目标计算机的修改,如此处不修改会出现 错误4 截图:
3.系统(Windows)环境设置 (必做) 我的电脑->属性->高级系统设置->高级->环境变量->Path,添加: <MATLAB>\R2010b\bin;<MATLAB>\R2010b\extern\lib\win64\microsoft;<MATLAB>\bin\win64 注:1.Windows7的情况下,“用户变量”和“系统 变量”都需 添加,如不添加,运行时会出现 错误5
2.哈哈,别忘记重启哈,重启后生效
OK!配置就此结束,现在就开始engOpen吧!!对了,别忘记添加#include "engine.h"。 例程: #include <iostream> #include "windows.h" #include "math.h" #include "engine.h" //Matlab的头文件 int main () { const int N = 50; double x [ N ], y [ N ]; int j = 1; for ( int i = 0; i < N ; i ++) { x [ i ] = ( i + 1); y [ i ] = sin ( x [ i ]) + j * log ( x [ i ]); j *= -1; } Engine * pEng = NULL ; //open engine if (!( pEng = engOpen ( NULL ))) { std :: cout << "Openmatlab enging failed!" << std :: endl ; system ( "pause" ); return -1; } mxArray * xx = mxCreateDoubleMatrix (1, N , mxREAL ); mxArray * yy = mxCreateDoubleMatrix (1, N , mxREAL ); memcpy ( mxGetPr ( xx ), x , N * sizeof ( double )); memcpy ( mxGetPr ( yy ), y , N * sizeof ( double )); engPutVariable ( pEng , "xx" , xx ); engPutVariable ( pEng , "yy" , yy ); std :: string evalString = "plot(xx,yy);" ; engEvalString ( pEng , evalString . c_str ()); mxDestroyArray ( xx ); mxDestroyArray ( yy ); Sleep (3*60*100); //close engine 关闭Matlab if ( NULL != pEng ) { engClose ( pEng ); } system ( "pause" ); return 1; } 效果;
附录:错误情况及解决
2.提示:“libeng.lib libmat.lib"无法打开 解决:附件依赖性在VS2010前以空格隔开,在VS2010后使用;隔开。
3.提示:“ "error LNK2019: 无法解析的外部符号 _interp1Initialize,该符号在函..."” 解决:操作如2.VS环境设置中的(2) 项目右键->属性->链接器->高级->目标计算机:更改...及(3)
4.提示:“ "模块计算机类型“X86”与目标计算机类型“x64”冲突..."” 解决:操作如2.VS环境设置中的(3)
4.提示:“ 系统丢失libeng.dll..."” 解决:操作如 3.系统环境设置
1.mbuild – setup后没有“VS2010”选项 源地址:http://blog.renren.com/GetEntry.do?id=721771317&owner=240190126 源地址:http://www.cnblogs.com/uniquews/archive/2012/12/27/2835923.html |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论