在matlab中调用c程序(32位与64位matlab).doc

在matlab中调用c程序(32位与64位matlab).doc

ID:53239822

大小:37.00 KB

页数:3页

时间:2020-04-02

在matlab中调用c程序(32位与64位matlab).doc_第1页
在matlab中调用c程序(32位与64位matlab).doc_第2页
在matlab中调用c程序(32位与64位matlab).doc_第3页
资源描述:

《在matlab中调用c程序(32位与64位matlab).doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、1.Maltab编译Mex文件(不可调试)(1)helloword在matlab命令行中输入:mex-setup选择合适编译器,完成设置。新建一个文件,输入:#includevoidmexFunction(intnlhs,mxArray*plhs[],intnrhs,constmxArray*prhs[]){    mexPrintf("Helloword!");}把上面程序保存为一个C文件,如    hello.c在commandwindow下运行>>mexhello.c>>结束之后在currentfolde

2、r窗口里会有一个hello.mexw32文件。在commandwindow下运行>>hello()Helloword!(2)如果是多维数组并不能用Arr[i][j]的格式寻址,在参数在C里只是一维数组,一维数组按列排列,C语言是按行排列的,如[abcd;efgh]C语言在内存中是按abcdefgh排列,而matlab是按aebfcgdh排列的。如果要变成C语言可Arr[i][j]索引的格式,可用for循环转化打印函数:mexPrintf()相当于matlab的disp函数,mexPrintf函数里需要打印的部分必须用""而不

3、能用'' 子函数的问题:子函数有两种方式,一种采用return值得方式返回值另一种方式为利用参数返回值,把需要return的值直接赋给形参。 多个.c文件的编译:多个.c文件中只能存在一个mexFunction函数可用mex('a.c','b.c','d.c')的格式编译2.在VS中调试mex(1)在vs中建立dll工程,建立project.cpp文件,输入#include"project.h"#includevoidmexFunction(intnlhs,mxArray*plhs[],intnrhs,cons

4、tmxArray*prhs[]){    mexPrintf("Helloword!");}建立.h文件,输入#include"matrix.h"#include"mex.h"#defineTESTMATLAB_EXPORTS#ifdefTESTMATLAB_EXPORTS#defineMEX_FUNCTION_API__declspec(dllexport)#else#defineMEX_FUNCTION_API__declspec(dllimport)#endifMEX_FUNCTION_APIvoidmexFuncti

5、on(intnlhs,mxArray*plhs[],intnrhs,mxArray*prhs[]);建立project.def文件,输入LIBRARYEXPORTSmexFunction(1)添加include和lib路径若matlab为32位,liblujing为:D:ProgramFilesMATLABR2014aexternlibwin3264位则为:D:ProgramFilesMATLABR2014aexternlibwin64microsoftinclude路径为:D:ProgramFi

6、lesMATLABR2014aexterninclude(2)添加链接器附加依赖项libmx.liblibeng.liblibmat.liblibmex.lib,将连接器输出的文件名称后缀,project.dll改为project.mexw32,64位改为project.mexw64(3)设置C/C++-代码生成-运行库为多线程调试(/Mtd)(4)若为64位matlab,还需将vs的编译平台设置为x64(5)生成解决方案,会在debug目录生成project.mexw64.(6)打开matlab,将工作目录改到如上

7、debug目录,包含project.mexw64文件(7)开始调试,在vs中cpp文件设置端点,选择工具-附件到进程-matlab-添加,再在matlab中运行该文件,即可跳入端点处.(8)调试完成后,将project.mexw64放入matlab的目录中,可以直接调用3.调用C语言普通dll(1)按照一般方法建立dllMatlabDllTest.cpp:#include"MatlabDllTest.h"double add(double x, double y){    return (x+y);}MatlabDllTes

8、t.h:#ifndefMATLABDLLTEST_H#defineMATLABDLLTEST_H__declspec(dllexport)doubleadd(doublex,doubley);#endifMatlabDllTest.def:LIBRARYEXPORTSadd(2)生成解决方

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。