Procházet zdrojové kódy

* Correctly load library, make this public

Michaël Van Canneyt před 1 rokem
rodič
revize
a36fca37f1
1 změnil soubory, kde provedl 21 přidání a 5 odebrání
  1. 21 5
      packages/wasmedge/src/libwasmedge.pp

+ 21 - 5
packages/wasmedge/src/libwasmedge.pp

@@ -12,7 +12,6 @@ uses
 {$ELSE}  
 {$ELSE}  
   ctypes;
   ctypes;
 {$ENDIF}
 {$ENDIF}
-
 {
 {
   Automatically converted by H2Pas 0.99.16 from libwasmedge4.h
   Automatically converted by H2Pas 0.99.16 from libwasmedge4.h
   The following command line parameters were used:
   The following command line parameters were used:
@@ -28,6 +27,20 @@ uses
     -c
     -c
     libwasmedge4.h
     libwasmedge4.h
 }
 }
+
+const
+  {$IFDEF UNIX}
+  {$IFNDEF DARWIN}
+  LibWasmName = 'libwasmedge.so';
+  {$ELSE}
+  LibWasmName = 'libwasmedge.dylib';
+  {$ENDIF}
+  {$ELSE}
+  {$IFDEF WINDOWS}
+  LibWasmName = 'libwasmedge.dll';
+  {$ENDIF}
+  {$ENDIF}
+
 {$IFDEF FPC}
 {$IFDEF FPC}
 {$PACKRECORDS C}
 {$PACKRECORDS C}
 {$ENDIF}
 {$ENDIF}
@@ -611,6 +624,9 @@ WasmEdge_Plugin_GetDescriptor : function:PWasmEdge_PluginDescriptor;cdecl;
 WasmEdge_ExecutorExperimentalRegisterPreHostFunction : procedure(Cxt:PWasmEdge_ExecutorContext; Data:pointer; Func:TFinalizer);cdecl;
 WasmEdge_ExecutorExperimentalRegisterPreHostFunction : procedure(Cxt:PWasmEdge_ExecutorContext; Data:pointer; Func:TFinalizer);cdecl;
 WasmEdge_ExecutorExperimentalRegisterPostHostFunction : procedure(Cxt:PWasmEdge_ExecutorContext; Data:pointer; Func:TFinalizer);cdecl;
 WasmEdge_ExecutorExperimentalRegisterPostHostFunction : procedure(Cxt:PWasmEdge_ExecutorContext; Data:pointer; Func:TFinalizer);cdecl;
 
 
+procedure Loadlibwasmedge(const lib : string = LibWasmName);
+procedure FreeLibWasmEdge;
+
 implementation
 implementation
 
 
 {$IFDEF FPC_DOTTEDUNITS}
 {$IFDEF FPC_DOTTEDUNITS}
@@ -626,6 +642,8 @@ uses
 
 
   procedure Freelibwasmedge;
   procedure Freelibwasmedge;
     begin
     begin
+      if hLib=NilHandle then
+        exit;
       FreeLibrary(hlib);
       FreeLibrary(hlib);
       WasmEdge_VersionGet:=nil;
       WasmEdge_VersionGet:=nil;
       WasmEdge_VersionGetMajor:=nil;
       WasmEdge_VersionGetMajor:=nil;
@@ -872,11 +890,11 @@ uses
     end;
     end;
 
 
 
 
-  procedure Loadlibwasmedge(lib : pchar);
+  procedure Loadlibwasmedge(const lib : string);
     begin
     begin
       Freelibwasmedge;
       Freelibwasmedge;
       hlib:=LoadLibrary(lib);
       hlib:=LoadLibrary(lib);
-      if hlib=0 then
+      if (hlib=0) then
         raise Exception.Create(format('Could not load library: %s',[lib]));
         raise Exception.Create(format('Could not load library: %s',[lib]));
 
 
       pointer(WasmEdge_VersionGet):=GetProcAddress(hlib,'WasmEdge_VersionGet');
       pointer(WasmEdge_VersionGet):=GetProcAddress(hlib,'WasmEdge_VersionGet');
@@ -1124,8 +1142,6 @@ uses
     end;
     end;
 
 
 
 
-initialization
-  Loadlibwasmedge('libwasmedge');
 finalization
 finalization
   Freelibwasmedge;
   Freelibwasmedge;