我正在开发一个项目,我正在给它一个DLL,它是在matlab中创建的,它的源代码是一个matlab .m文件。我明白为了能够使用matlab .ddl,我需要安装matlab运行时编译器。我做到了这一点。
这是我需要了解的后续步骤。
通过阅读这里的另一篇文章,我可以看到,首先我需要初始化运行时,然后初始化每个DLL。我不确定正确的做法。我已经创建了一个新单元,但我不确定如何完成它,所以我可以使用DLL中包含的功能。
单位代码如下:
unit MatLabIF;
interface
type
PPAnsiChar = ^PAnsiChar;
function mclInitializeApplication(A: PAnsiChar; B: Integer): Boolean; cdecl;
external 'mclbase.dll';
procedure openMCL;
implementation
uses
Windows,sysUtils,MMSystem,Classes,Dialogs,QuickUSB,Math,StirScanDemoApp;
{------------------------------------------------------------------------------}
procedure openMCL;
begin
if not(mclInitializeApplication(nil,0)) then showMessage('App failed to open')
else showMessage('App Opened Correctly')
end;
{------------------------------------------------------------------------------}
end.
当我尝试运行代码时,我收到了错误消息," mclbase.dll从您的计算机中丢失了#34;,我进入了matlab运行时编译器文件夹,找到了丢失的mclbase.dll并将其复制了进入项目文件夹。
下次我试图运行该程序时,另一个dll丢失了,这是否会继续发生?如何告诉delphi在matlab文件夹中找到它需要的所有dll?我是否需要某种陈述?"使用"像" mcl" ????
简而言之,
如何使用matlab运行时编译器在delphi中使用matlab dll?
答案 0 :(得分:1)
您需要DLL搜索路径才能找到MATLAB运行时。实现这一目标的一些方法:
SetDllDirectory
或AddDllDirectory
扩展搜索路径。 只有在加载程序尝试加载DLL之前可以调用这些函数时,才可以使用选项2。加载时间链接不可能。您可以使用以下技术之一处理:
LoadLibrary
链接的运行时。delayed
指令链接的延迟加载。请注意,变量名称A
和B
的选择很差。不要让代码难以理解。而且,该函数的第一个参数是指向空终止字符串的指针。这是一个字符串数组。使用PPAnsiChar
。