delphi开发LINUX程序,DELPHI开发LINUX包
DELPHI開發LINUX包
我們知道,有了包的存在,開發插件架構的程序,才成為可能 。
DELPHI在WINDOWS里面的包的擴展名是.bpl。
在LINUX里面的包的擴展名是.o。
怎樣在LINUX里面加載.o的包?
不論加載WINDOWS的包,還是加載LINUX的包,都是使用LoadPackage()函數加載。
function LoadPackage(const Name: string; AValidatePackage: TValidatePackageProc): HMODULE;
{$IFDEF POSIX}
var
DLErrorMsg: string;
M: TMarshaller;
{$ENDIF POSIX}
begin
{$IFDEF MSWINDOWS}
Result := SafeLoadLibrary(Name);
{$ENDIF MSWINDOWS}
{$IFDEF POSIX}
Result := HMODULE(dlopen(M.AsAnsi(Name, CP_UTF8).ToPointer, PkgLoadingMode));
{$ENDIF POSIX}
if Result = 0 then
begin
{$IFDEF POSIX}
DLErrorMsg := string(dlerror);
{$ENDIF POSIX}
raise EPackageError.CreateResFmt(@sErrorLoadingPackage,
[Name,
{$IFDEF MSWINDOWS}SysErrorMessage(GetLastError){$ENDIF MSWINDOWS}
{$IFDEF POSIX}DLErrorMsg{$ENDIF POSIX}]);
end;
try
InitializePackage(Result, AValidatePackage);
except
{$IFDEF MSWINDOWS}
FreeLibrary(Result);
{$ENDIF MSWINDOWS}
{$IFDEF POSIX}
dlclose(Result);
{$ENDIF POSIX}
raise;
end;
end;
procedure UnloadPackage(Module: HMODULE);
begin
FinalizePackage(Module);
{$IFDEF MSWINDOWS}
FreeLibrary(Module);
{$ENDIF MSWINDOWS}
{$IFDEF POSIX}
dlclose(Module);
InvalidateModuleCache;
{$ENDIF POSIX}
end;
總結
以上是生活随笔為你收集整理的delphi开发LINUX程序,DELPHI开发LINUX包的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java炫舞_Java 炫舞按键功能 D
- 下一篇: 中科大计算机学院博士导师,中科大计算机学