Vc调用Matlab7说明
2013-06-28 12:20
246 查看
Vc调用Matlab7说明
一、Matlab7安装配置
1. 安装(略),但需要保证电脑上 matlab与vs2008
2. 运行mex –setup(选择或改变编译配置,不配置可能会引起不能编译dll或者编译的dll 不能被vc调用)
1) 系统提示:Would you like mex to locate installed compilers [y]/n?
选择 y 回车
2) 出现结果可能如下:
Select a compiler:
[1] Lcc-win32 C 2.4.1 in F:\Tools\DevTools\MATLAB\R2009b\sys\lcc
[0] None
如果需要选择vc编译器(一般情况下)需要选择N,选择N后出现结果如下:
Select a compiler:
[1] Intel C++ 9.1 (with Microsoft Visual C++ 2005 SP1 linker)
[2] Intel Visual Fortran 10.1 (with Microsoft Visual C++ 2005 SP1linker)
[3] Microsoft Visual C++ 2005 SP1
[4] Microsoft Visual C++ 2008 Express
[5] Microsoft Visual C++ 2008 SP1
选择 5
3) 系统可能提示如下:
The default location for Microsoft VisualC++ 2008 SP1 compilers is C:\Program Files (x86)\Microsoft Visual Studio 9.0,
but that directory does not exist on thismachine.
Use C:\Program Files (x86)\Microsoft VisualStudio 9.0 anyway [y]/n?
路径正确时可以直接选Y,路径错误时选N,重新设置vc2008安装路径
4) 成功安装后出现可能提示:
Use C:\Program Files (x86)\Microsoft Visual Studio 9.0 anyway [y]/n?n
Please enter the location of your compiler: [C:\Program Files(x86)\Microsoft Visual Studio 9.0] D:\Program Files (x86)\Microsoft VisualStudio 9.0
Please verify your choices:
Compiler: Microsoft Visual C++ 2008 SP1
Location: D:\Program Files (x86)\Microsoft Visual Studio 9.0
3. 运行 mbuild –setup(配置基本同上)
二、Vc配置
如果配置一切正常,包含文件目录与库文件目录会自动设置,如果没有自动设置,需要手动设置一下。
1. 设置包含文件
设置vc++目录中的包含文件路径,在最下方添加实际的matlab的include路径
2. 设置库文件目录
三、Matlab生成dll
1. 使用matlab生成一个.m文件
2. 在matlab环境中调用该函数
现在我们得出的结果是 5
3. 运行 mcc -t-h-L C-W lib: ppp-T link: lib myfunct.m
MATLAB会提示 -t -h -L
这三个参数已经不再使用了,不管它,工作目录中会生成一堆文件,其中的ppp.h ppp.lib ppp.dll三个文件是我们所需要的。这个过程可能会持续一会,只要不报错,你多等一会,最多一分钟,在目录中会生成所需要的文件。
也可以直接使用
mcc -Wlib:gpsanarmxl -T link:lib gpsana.m
这样的命令行进行编译生成dll
其中ppp可以指定为其他的名字
四、Vc调用dll
1. 使用vc创建一个控制台程序
2. 在main函数中输入以下代码
注意:需要将lib文件添加到工程中。
3. 编译运行后,会输出结果 3。如果我们将 参数改为2,3,将会输出5,与matlab中输出的结果是相同的。
结果如下:
一、Matlab7安装配置
1. 安装(略),但需要保证电脑上 matlab与vs2008
2. 运行mex –setup(选择或改变编译配置,不配置可能会引起不能编译dll或者编译的dll 不能被vc调用)
1) 系统提示:Would you like mex to locate installed compilers [y]/n?
选择 y 回车
2) 出现结果可能如下:
Select a compiler:
[1] Lcc-win32 C 2.4.1 in F:\Tools\DevTools\MATLAB\R2009b\sys\lcc
[0] None
如果需要选择vc编译器(一般情况下)需要选择N,选择N后出现结果如下:
Select a compiler:
[1] Intel C++ 9.1 (with Microsoft Visual C++ 2005 SP1 linker)
[2] Intel Visual Fortran 10.1 (with Microsoft Visual C++ 2005 SP1linker)
[3] Microsoft Visual C++ 2005 SP1
[4] Microsoft Visual C++ 2008 Express
[5] Microsoft Visual C++ 2008 SP1
选择 5
3) 系统可能提示如下:
The default location for Microsoft VisualC++ 2008 SP1 compilers is C:\Program Files (x86)\Microsoft Visual Studio 9.0,
but that directory does not exist on thismachine.
Use C:\Program Files (x86)\Microsoft VisualStudio 9.0 anyway [y]/n?
路径正确时可以直接选Y,路径错误时选N,重新设置vc2008安装路径
4) 成功安装后出现可能提示:
Use C:\Program Files (x86)\Microsoft Visual Studio 9.0 anyway [y]/n?n
Please enter the location of your compiler: [C:\Program Files(x86)\Microsoft Visual Studio 9.0] D:\Program Files (x86)\Microsoft VisualStudio 9.0
Please verify your choices:
Compiler: Microsoft Visual C++ 2008 SP1
Location: D:\Program Files (x86)\Microsoft Visual Studio 9.0
3. 运行 mbuild –setup(配置基本同上)
二、Vc配置
如果配置一切正常,包含文件目录与库文件目录会自动设置,如果没有自动设置,需要手动设置一下。
1. 设置包含文件
设置vc++目录中的包含文件路径,在最下方添加实际的matlab的include路径
2. 设置库文件目录
三、Matlab生成dll
1. 使用matlab生成一个.m文件
2. 在matlab环境中调用该函数
现在我们得出的结果是 5
3. 运行 mcc -t-h-L C-W lib: ppp-T link: lib myfunct.m
MATLAB会提示 -t -h -L
这三个参数已经不再使用了,不管它,工作目录中会生成一堆文件,其中的ppp.h ppp.lib ppp.dll三个文件是我们所需要的。这个过程可能会持续一会,只要不报错,你多等一会,最多一分钟,在目录中会生成所需要的文件。
也可以直接使用
mcc -Wlib:gpsanarmxl -T link:lib gpsana.m
这样的命令行进行编译生成dll
其中ppp可以指定为其他的名字
四、Vc调用dll
1. 使用vc创建一个控制台程序
2. 在main函数中输入以下代码
int _tmain(int argc, _TCHAR* argv[]) { // 初始化环境 bool bl = pppInitialize(); // 参数定义 double a[1] = {1.0}; double b[1] = {2.0}; double ret; // 因为matlab所需要的参数都是矩阵,故应如下方式定义 mxArray *G = mxCreateDoubleMatrix(1, 1, mxREAL); // 输入矩阵,× mxArray *y = mxCreateDoubleMatrix(1, 1, mxREAL); // 调用MATLAB函数,参数都必须是矩阵形式 mxArray *R = mxCreateDoubleMatrix(1, 1, mxREAL); // 调用MATLAB函数,参数都必须是矩阵形式 // 将数据拷贝到matlab定义的变量中 memcpy((void *)mxGetPr(G), (void *)a, sizeof(a)); // 拷贝数据 memcpy((void *)mxGetPr(y), (void *)b, sizeof(b)); // 拷贝数据 // 调用函数 mlfMyfunct(1, &R, G, y); // 从matlab返回值中获得函数返回值 double * md = mxGetPr(R); // 取得mxArray中的数据 double result = md[0]; // 数组第一个元素就是我们想要的值 // 打印返回值 printf("%f", result); // 将matlab申请的变量释放掉 mxDestroyArray(G); // 释放内存 mxDestroyArray(y); pppTerminate(); // 结束调用 char c; scanf("%c",&c); return 0; } |
结果如下:
相关文章推荐
- VC 中调用Fortran动态链接库函数开发说明
- VC 中调用Fortran动态链接库函数开发说明
- C#调用VC的DLL的接口函数参数类型转换一览表_蓝竹傲雪
- xShell终端调用VBS脚本 使用方法说明
- 支付宝alipay使用小结 调用支付宝程序被杀死说明
- 一步一步教你用VC和VB调用C++ DLL
- 如何实现IE中JS和VC之间的互相调用
- VC++中调用word进行word表格的填写
- 【VC】VC调用CB的dll,lib生成方法--CB dll转VC lib
- C#调用WMI获取Windows性能说明与范例
- C#调用VC DLL 复杂结构 解决方法
- VS2013 VC MFC 如何调用 COM
- 转的VC调用Matlab,动态库方式
- vc调用word出现的小问题(OLE DLLS未初始化 )
- VC怎样调用COM控件的接口函数
- vc(vs)中c++调用C#的DLL
- VC 调用 MinGW 生成的dll
- 非常实用的VC中线程使用说明
- 用VC创建供PB调用的DLL
- 转:VC调用vbscript.dll使用其正则表达式库