推广免费,临淄关键词网站优化培训中心,建设房地产法律网站,北京 顺义 网站制作DELPHI开发LINUX包我们知道#xff0c;有了包的存在#xff0c;开发插件架构的程序#xff0c;才成为可能 。DELPHI在WINDOWS里面的包的扩展名是.bpl。在LINUX里面的包的扩展名是.o。怎样在LINUX里面加载.o的包#xff1f;不论加载WINDOWS的包#xff0c;还是加载LINUX的包…DELPHI开发LINUX包我们知道有了包的存在开发插件架构的程序才成为可能 。DELPHI在WINDOWS里面的包的扩展名是.bpl。在LINUX里面的包的扩展名是.o。怎样在LINUX里面加载.o的包不论加载WINDOWS的包还是加载LINUX的包都是使用LoadPackage()函数加载。function LoadPackage(const Name: string; AValidatePackage: TValidatePackageProc): HMODULE;{$IFDEF POSIX}varDLErrorMsg: 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 thenbegin{$IFDEF POSIX}DLErrorMsg : string(dlerror);{$ENDIF POSIX}raise EPackageError.CreateResFmt(sErrorLoadingPackage,[Name,{$IFDEF MSWINDOWS}SysErrorMessage(GetLastError){$ENDIF MSWINDOWS}{$IFDEF POSIX}DLErrorMsg{$ENDIF POSIX}]);end;tryInitializePackage(Result, AValidatePackage);except{$IFDEF MSWINDOWS}FreeLibrary(Result);{$ENDIF MSWINDOWS}{$IFDEF POSIX}dlclose(Result);{$ENDIF POSIX}raise;end;end;procedure UnloadPackage(Module: HMODULE);beginFinalizePackage(Module);{$IFDEF MSWINDOWS}FreeLibrary(Module);{$ENDIF MSWINDOWS}{$IFDEF POSIX}dlclose(Module);InvalidateModuleCache;{$ENDIF POSIX}end;