步骤:
1、在 matlab 中,将 .m 文件编译成 .c 文件;
2、用 bcc32 编译 .c 文件,得到 obj 文件;
3、在 Delphi 中,调用 obj 文件;
步骤1、在 matlab 中,将 .m 文件编译成 .c 文件
a).编写test.m文件
function [c,d] = test(a,b)
c = a + b;
d = a * b;
b).运行matlab2014a,在工作界面输入coder,在Matlab Coder Project 新建工程对话框中输入工程名称 test
在窗体右侧的工程中,添加test.m文件到工程中,
添加完test.m文件以后,选择函数输入的参数类型:
切换到 Build 页,进行设置
最后点击编译。
会在你的工程目录下生成.c文件。
步骤1结束。
步骤2、用 bcc32 编译 .c 文件,得到 obj 文件
在.c文件目录下新建1个bat文件,内容为:(路径为你机器上实际路径)
X:…DXE8incc32 -c -nBCCOBJ -IX:…DXE8Include;X:…DXE8IncludeWindowscrtl rt_nonfinite.c
X:…DXE8incc32 -c -nBCCOBJ -IX:…DXE8Include;X:…DXE8IncludeWindowscrtl rtGetInf.c
X:…DXE8incc32 -c -nBCCOBJ -IX:…DXE8Include;X:…DXE8IncludeWindowscrtl rtGetNaN.c
X:…DXE8incc32 -c -nBCCOBJ -IX:…DXE8Include;X:…DXE8IncludeWindowscrtl test.c
X:…DXE8incc32 -c -nBCCOBJ -IX:…DXE8Include;X:…DXE8IncludeWindowscrtl test_initialize.c
X:…DXE8incc32 -c -nBCCOBJ -IX:…DXE8Include;X:…DXE8IncludeWindowscrtl test_terminate.c
pause
保存
在同目录下建立 BCCOBJ 目录
运行bat文件
在 BCCOBJ目录下,将会生成6个obj文件。
步骤2结束。
步骤3、在 Delphi 中,调用 obj 文件
在Delphi中援用这些 obj 文件,就能够使用了。
{$LINK bccobj est_terminate.obj}
{$LINK bccobj est.obj}
{$LINK bccobjt_nonfinite.obj}
{$LINK bccobjtGetInf.obj}
{$LINK bccobjtGetNaN.obj}
定义要使用的函数:
procedure _test_terminate(); cdecl; external;
procedure _test(const a, b: Integer; var c, d: Integer); cdecl; external;
调用
a, b: Integer;
begin
_test_initialize();
_test(2, 3, a, b);
_test_terminate();
Caption := Format('%d %d', [a, b]);
end;
步骤3结束。
波比源码 » Delphi 如何使用 Matlab 的 .m文件?