在Delphi中,你可以使用RTL(运行时库)中的函数 GetProcAddress
来根据函数名称运行函数。这个函码可以在 SysUtils
单元中找到。
以下是一个简单的例子,演示如何根据函数名称调用一个动态库中的函数:
uses SysUtils, Windows; // 假设你有一个动态库 DLLTest.dll,它有一个导出的函数 void TestFunction(); procedure RunFunctionByName(const FunctionName: string); var DLLHandle: THandle; FunctionPtr: Pointer; begin DLLHandle := LoadLibrary('DLLTest.dll'); if DLLHandle <> 0 then begin FunctionPtr := GetProcAddress(DLLHandle, PChar(FunctionName)); if Assigned(FunctionPtr) then begin // 这里我们把 FunctionPtr 转换为无参数无返回值的函数指针 // 如果你的函数有参数或返回值,请使用适当的函数指针类型 TProcedure(FunctionPtr)(); end else raise Exception.CreateFmt('函数 %s 未找到。', [FunctionName]); FreeLibrary(DLLHandle); end else raise Exception.Create('无法加载动态库。'); end; begin try // 假设我们要调用的函数名为 'TestFunction' RunFunctionByName('TestFunction'); except on E: Exception do Writeln(E.ClassName, ': ', E.Message); end; end.
在这个例子中,我们首先加载了名为 DLLTest.dll
的动态链接库。然后,我们使用 GetProcAddress
函数来获取函数的地址,并根据函数名称调用它。注意,你需要确保你传递的函数名与DLL中导出的函数名完全匹配,包括大小写。
请确保你的DLL是可以被调用的,并且你有正确的调用约定。如果函数需要参数或者返回值,你需要使用正确的函数指针类型,例如 TFunction
或 TMethod
。
提示:AI自动生成,仅供参考
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END