用c编写mex程序[一]
前面说到通过把耗时长的函数用c语言实现,并编译成mex函数可以加快执行速度。这 Matlab5.1本身是不带c语言的编译器的,所以要求你的机器上已经安装有VC,BC或Wat com C中 的一种。如果你在安装Matlab时已经设置过编译器,那么现在你应该就可以使用 mex命令来编 译c语言的程序了。如果当时没有选,只要在Matlab里键入 mex -setup ,就会出现一个DOS方 式窗口,下面只要根据提示一步步设置就可以了。由于我用的是w 听说Matlab5.2已经内置了 C语言的编译器,那么下面的这些可能就用不着了。可惜现 需要注意的是,在设置编译器路径 时,只能使用路径名称的8字符形式。比如我用的V C5装在路径 C:\PROGRAM FILES\DEVSTUDI O下,那在设置路径时就要写成:C:\PROGRA~1 这样设置完之后,mex就可以执行了。为了测试 你的路径设置正确与否,把下面的程序 存为hello.c。 存为hello.c。 #include "mex.h" void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) { mexPrintf("hello,world!\n"); } 假设你把hello.c放在了C:\TEST\下 ,在Matlab里用CD C:\TEST\ 将当前目录改为C:\ 需要注意的是,在设置编译器路径时,只能 使用路径名称的8字符形式。比如我用的V C5装在路径 C:\PROGRAM FILES\DEVSTUDIO下,那在 设置路径时就要写成:C:\PROGRA~1 这样设置完之后,mex就可以执行了。为了测试你的路径 设置正确与否,把下面的程序 存为hello.c。 #include "mex.h" void mexFunction(int nl hs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) { mexPrintf("hello,world!\n "); } 假设你把hello.c放在了C:\TEST\下,在Matlab里用CD C:\TEST\ 将当前目录改为C:\ TEST\(注意,仅将C:\TEST\加入搜索路径是没有用的)。现在敲: mex hello.c 如果一切顺 利,编译应该在出现编译器提示信息后正常退出。如果你已将C:\TEST\加 入了搜索路径,现 在键入hello,程序会在屏幕上打出一行: hello,world! 看看C\TEST\目录下,你会发现多了 一个文件:HELLO.DLL。 这样,第一个mex函数就算完成了。怎么样,很简单吧。下一次,会 对这个最简单的程 序进行分析,并给它增加一些功能。 |
GMT+8, 2025-4-11 21:45 , Processed in 0.057967 second(s), 23 queries , Gzip On.
Powered by Discuz! X3.4
Copyright © 2001-2021, Tencent Cloud.