我有一如下的程序:
unit Unit1; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls; type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; function RunDllFuc(a,b:Double):Double;cdecl;external'Test_DLL.DLL'; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var a,b,c:Double; begin c:=RunDllFuc(a,b); end; end.
其中RunDllFun(a,b)是Test_DLL.DLL中的一个函数,RunDllFun(a,b)执行时要用到大量的数据,我将这些数据存放在与Test_DLL.DLL不同的路径下,请问,应该怎样给RunDLLFun提供工作路径?
绝对路径,如c:\\demo\\
或者相对路径,首先使用API可以获取当前的运行目录,然后相对这个设置就行
虽然你回答得不是很清楚,但我根据你的提示,解决了这个问题,辛苦了,谢谢
Function GetDllPath:string;
var
ModuleName:string;
begin
SetLength(ModuleName, 255);
//取得Dll自身路径
GetModuleFileName(HInstance, PChar(ModuleName), Length(ModuleName));
Result := PChar(ModuleName);
end;