下面这篇帖子,希望对你有帮助.
如何在delphi中调用.m文件?
在VC中利用Matcom的Visual MatrixLib将Matlab程序做成标准的Windows DLL,在Delphi中可以进行调用,
通过函数的输入、输出参数进行数据交换,通过实验已经调试成功。
具体的步骤和注意事项如下:
在VC中新建一个空的Windows Dynamic-link Library工程,取名为MotorDSP。在工程中加
入一个c/c++ source file,取名为main.cpp,在第一行写下这句话“#include ”,
注意include的路径。再在这个工程里添加“v4501v.lib”。再在工程中添加一个文本
文件,取名为MotorDSP.def,一个def文件的标准格式如下:
LIBRARY MotorDSP
CODE PRELOAD MOVEABLE DISCARDABLE
DATA PRELOAD SINGLE
EXPORTS
后接要输出的函数名即可,不需要完成的输入、输出声明。在main.cpp中对要输出的
函数进行声明和具体的实现,注意函数的声明一定要以WINAPI开头。例如
WINAPI int fft(…) {};
在Delphi中这样声明一个DLL中的函数:
Function (procedure) fft(…) : integer;
stdcall;
external ‘MotorDSP.dll’ name ‘fft’;
注意: ①一定要用stdcall;
②DLL文件的路径;
③函数的大小写一定要和在VC中声明的一样。
参数传递中最好不要使用string类型,数组的传递通过指向数组的指针进行,例如:
Typedo
ubleArray : array ofdo
uble;
PdoubleArray : ^DoubleArray;
Var data : PdoubleArray;
begin
Getmem(data, n×sizeof(double));
Data := I;
……;
freemem(data);
在VC中如何把得到的数组指针转换到MatrixLib所认的矩阵形式,请看
Matrix User’s Guide。