vs2010+matlab2009引擎
来源:互联网 发布:数据分析前景 知乎 编辑:程序博客网 时间:2024/06/05 11:14
》》环境:
VISTA+MATLAB2009a+VS2010
》》资料:
以安装路径“E:\Program Files\MATLAB\R2009a\”为例
MATLAB外部支持文件夹:
E:\Program Files\MATLAB\R2009a\extern
matlab自带的c例程:
E:\Program Files\MATLAB\R2009a\extern\examples\eng_mat
engine.h的位置:
E:\Program Files\MATLAB\R2009a\extern\include
各种lib的位置:
E:\Program Files\MATLAB\R2009a\extern\lib\win32\microsoft
在matlab帮助中输入“C language”即可找到有关MATLAB Engine的一个页面。
从这个页面开始,学习各种关键词,
就能够找到一切你需要的资料。
使用MATLAB Engine一般用两套函数就可以了。
1.engXXXX,关于Engine本身的操作,包括打开/关闭,设置/取得变量,执行语句等等。
2.mxXXXX,关于数据类型mxArray的操作,与MATLAB交互的左右类型全部为mxArray。
》》一个搭建实例
先在VS2010的 项目->属性-> VC++目录->包含目录 下加上:
include files:
E:\Program Files\MATLAB\R2009a\extern\include
项目->属性-> VC++目录->库目录 下加上
library files:
E:\Program Files\MATLAB\R2009a\extern\lib\win32\microsoft
做好这些后,如果我们环境一样,
下面的代码应该能够编通并且正常执行,
其中包含了常用的一些函数,
一般来说使用Engine的时候也就用这些了。
》》某些问题
如果出现这个:
engdemo.obj : error LNK2001: unresolved external symbol _engClose
engdemo.obj : error LNK2001: unresolved external symbol _engSetVisible
engdemo.obj : error LNK2001: unresolved external symbol _mxDestroyArray
engdemo.obj : error LNK2001: unresolved external symbol _mxGetData
engdemo.obj : error LNK2001: unresolved external symbol _mxGetDimensions_730
engdemo.obj : error LNK2001: unresolved external symbol _mxGetNumberOfDimensions_730
engdemo.obj : error LNK2001: unresolved external symbol _engGetVariable
engdemo.obj : error LNK2001: unresolved external symbol _engEvalString
engdemo.obj : error LNK2001: unresolved external symbol _engPutVariable
engdemo.obj : error LNK2001: unresolved external symbol _mxGetPr
engdemo.obj : error LNK2001: unresolved external symbol _mxCreateDoubleMatrix_730
engdemo.obj : error LNK2001: unresolved external symbol _engOpen
其实就是lib没有添加好。
在代码中写上:
#pragma comment(lib,"libeng.lib")
#pragma comment(lib,"libmx.lib")
就可以了。
或者可以在工程的连接设置里面添加这两个库。
不过我倾向于前者,这样在发布源码的同时,
就尽最大可能地保证能够编译,
而不用其他人学习的时候再去设置。
当然,由于#pragma是由编译器自己决定的,
所以代码的可移植性存在一些问题。
如果还是报上面的错误,估计是没有将lib的路径添加对。
具体参考上面的那个实例,然后注意把路径换成自己机器上的。
VISTA+MATLAB2009a+VS2010
》》资料:
以安装路径“E:\Program Files\MATLAB\R2009a\”为例
MATLAB外部支持文件夹:
E:\Program Files\MATLAB\R2009a\extern
matlab自带的c例程:
E:\Program Files\MATLAB\R2009a\extern\examples\eng_mat
engine.h的位置:
E:\Program Files\MATLAB\R2009a\extern\include
各种lib的位置:
E:\Program Files\MATLAB\R2009a\extern\lib\win32\microsoft
在matlab帮助中输入“C language”即可找到有关MATLAB Engine的一个页面。
从这个页面开始,学习各种关键词,
就能够找到一切你需要的资料。
使用MATLAB Engine一般用两套函数就可以了。
1.engXXXX,关于Engine本身的操作,包括打开/关闭,设置/取得变量,执行语句等等。
2.mxXXXX,关于数据类型mxArray的操作,与MATLAB交互的左右类型全部为mxArray。
》》一个搭建实例
先在VS2010的 项目->属性-> VC++目录->包含目录 下加上:
include files:
E:\Program Files\MATLAB\R2009a\extern\include
项目->属性-> VC++目录->库目录 下加上
library files:
E:\Program Files\MATLAB\R2009a\extern\lib\win32\microsoft
做好这些后,如果我们环境一样,
下面的代码应该能够编通并且正常执行,
其中包含了常用的一些函数,
一般来说使用Engine的时候也就用这些了。
#include <stdlib.h>#include <stdio.h>#include <string.h>#include "engine.h"#include "matrix.h"#pragma comment(lib,"libeng.lib") #pragma comment(lib,"libmx.lib")int main(){ Engine *ep; int i , j ; //show how to open MATLAB engine //for remote ones: //engOpen( ADDRESS OF REMOTE SYSTEM ) ; if (!(ep = engOpen("\0"))){ fprintf(stderr, "\nCan't start MATLAB engine\n"); return EXIT_FAILURE; } //show how to create matrix mxArray *Y = mxCreateDoubleMatrix(1 , 3 , mxREAL) ; //show how to put data in matrix double tmp[3] = {1.0 , 2.0 , 3.0} ; memcpy(mxGetPr(Y) , tmp , sizeof(tmp)) ; //show how to put variables in the Engine engPutVariable(ep , "Y" , Y) ; //show how to execute commands in MATLAB engEvalString(ep, "X = ones(5,1) * Y"); //show how to get variables from the Engine mxArray *X = engGetVariable(ep , "X") ; //show how to manipulate dimensions int dims[10] ; int ndims ; ndims = mxGetNumberOfDimensions(X) ; printf("total number of dimensions is %d\n" , ndims) ; memcpy(dims , mxGetDimensions(X) , ndims * sizeof(int)) ; for ( i = 0 ; i < ndims ; i ++ ){ printf("dimension %d : %d\n" , i , dims[i]) ; } printf("\n") ; //show how the data is stored in the memory double *p = (double*)mxGetData(X) ; for ( i = 0 ; i < dims[0] ; i ++ ){ for ( j = 0 ; j < dims[1] ; j ++ ){ printf("%8.2f" , p[j * dims[0] + i]) ; } printf("\n") ; } //---important, to release resources mxDestroyArray(X) ; mxDestroyArray(Y) ; //show how to hide and unhide MATLAB command window printf("type RETURN to hide the MATLAB command window...\n") ; getchar() ; engSetVisible(ep , false) ; printf("type RETURN to unhide the MATLAB command window...\n") ; getchar() ; engSetVisible(ep , true) ; printf("type RETURN to END this program...\n") ; getchar() ; //remembering to close it is important . //but if you are debugging your programs , //annotate the following line will save you a lot of time , //for you needn't to restart the Engine . engClose(ep) ; //when your work is accomplished , type "exit" in MATLAB command window return EXIT_SUCCESS;}
》》某些问题
如果出现这个:
engdemo.obj : error LNK2001: unresolved external symbol _engClose
engdemo.obj : error LNK2001: unresolved external symbol _engSetVisible
engdemo.obj : error LNK2001: unresolved external symbol _mxDestroyArray
engdemo.obj : error LNK2001: unresolved external symbol _mxGetData
engdemo.obj : error LNK2001: unresolved external symbol _mxGetDimensions_730
engdemo.obj : error LNK2001: unresolved external symbol _mxGetNumberOfDimensions_730
engdemo.obj : error LNK2001: unresolved external symbol _engGetVariable
engdemo.obj : error LNK2001: unresolved external symbol _engEvalString
engdemo.obj : error LNK2001: unresolved external symbol _engPutVariable
engdemo.obj : error LNK2001: unresolved external symbol _mxGetPr
engdemo.obj : error LNK2001: unresolved external symbol _mxCreateDoubleMatrix_730
engdemo.obj : error LNK2001: unresolved external symbol _engOpen
其实就是lib没有添加好。
在代码中写上:
#pragma comment(lib,"libeng.lib")
#pragma comment(lib,"libmx.lib")
就可以了。
或者可以在工程的连接设置里面添加这两个库。
不过我倾向于前者,这样在发布源码的同时,
就尽最大可能地保证能够编译,
而不用其他人学习的时候再去设置。
当然,由于#pragma是由编译器自己决定的,
所以代码的可移植性存在一些问题。
如果还是报上面的错误,估计是没有将lib的路径添加对。
具体参考上面的那个实例,然后注意把路径换成自己机器上的。
- vs2010+matlab2009引擎
- vs2008 matlab2009
- VS2010调用matlab2010b引擎
- ubuntukylin 14.04 下安装matlab2009
- VS2010 编译 google V8 引擎 为 dll
- vs2010 matlab混合编程调用matlab引擎
- VS2010调用MatlabR2010b的图形引擎
- VS2010与MATLAB集成(1)-使用引擎方式
- Tesseract-OCR引擎和VS2010工程简单调用
- 《基于VS2010调用matlab2010b引擎实现混合编程》
- VS2010
- Vs2010
- vs2010
- vs2010
- VS2010
- VS2010
- vs2010
- vs2010
- ubuntu命令安装和卸载软件包
- BZFlag 游戏
- 博客转移至http://www.cnblogs.com/zdcaolei/,该博客不再更新
- 6、backbone中的view实例
- 提高程序的可读性以及可维护性
- vs2010+matlab2009引擎
- oracle 数据库判断指定表中是否有指定列
- 影像播放与画面处理
- HMAC-MD5算法原理及实现
- 32位系统 2级页表详解
- 多继承——成员访问冲突
- 第九周实验报告3
- VISTA、Win Server 2008、Win7 等系统音频系统底层API
- Android3.1打开系统设置页面的正确方法