我正在尝试从我的程序动态加载一个exe文件,并从该动态加载的exe中运行SomeProcedure。这是我在加载的exe库.exe中所做的操作。
interface
procedure SomeProcedure; stdcall;
implementation
procedure SomeProcedure;
begin
ShowMessage('Ala has a cat');
end;
这里是我的exe文件,它加载了library.exe并尝试运行其中的SomeProcedure函数。
type
THandle = Integer;
TProc = procedure();
var
AHandle: THandle;
Proc: TProc;
procedure TForm1.Button1Click(Sender: TObject);
begin
AHandle := LoadLibrary('library.exe');
if AHandle <> 0 then begin
@Proc := GetProcAddress(AHandle, 'SomeProcedure');
if @Proc <> nil then
try
Proc;
finally
FreeLibrary(AHandle);
end;
end;
end;
end;
很遗憾它不起作用了 - AHandle有一个地址,但是GetProcAddress总是返回nil。我做错了什么?
exports SomeProcedure;
吗? - Sertac Akyuzexport
指令是干嘛用的... - Sertac Akyuz