@@ -1237,7 +1237,8 @@ TDynamicDll = class(TComponent)
1237
1237
1238
1238
procedure LoadPythonInfoFromModule ;
1239
1239
function GetPythonModuleFromProcess (): NativeUInt;
1240
- function HasHostSymbols (): boolean;
1240
+ // Check for Python symbols in the current loaded library (FDLLHandle)
1241
+ function HasPythonSymbolsInLibrary (): boolean;
1241
1242
procedure LoadFromHostSymbols ();
1242
1243
// Loading strategies
1243
1244
function TryLoadFromHostSymbols (): boolean;
@@ -3097,16 +3098,10 @@ function TDynamicDll.GetPythonModuleFromProcess(): NativeUInt;
3097
3098
{ $IFNDEF FPC}
3098
3099
3099
3100
function HasSymbols (const AModule: NativeUInt): boolean;
3100
- var
3101
- LPy_GetBuildInfo: function : PAnsiChar; cdecl;
3102
- LPy_IsInitialized: function: integer; cdecl;
3103
3101
begin
3104
3102
FDLLHandle := AModule;
3105
3103
try
3106
- LPy_GetBuildInfo := Import (' Py_GetBuildInfo' , false);
3107
- LPy_IsInitialized := Import (' Py_IsInitialized' , false);
3108
- Result := Assigned(LPy_GetBuildInfo) and Assigned(LPy_GetBuildInfo())
3109
- and Assigned(LPy_IsInitialized) and (LPy_IsInitialized() <> 0 );
3104
+ Result := HasPythonSymbolsInLibrary();
3110
3105
finally
3111
3106
FDLLHandle := 0 ;
3112
3107
end ;
@@ -3312,10 +3307,16 @@ function TDynamicDll.TryLoadFromCurrentProcess: boolean;
3312
3307
function TDynamicDll.TryLoadFromHostSymbols : boolean;
3313
3308
begin
3314
3309
// We want to look in for host symbols at first
3310
+ { $IFNDEF FPC}
3311
+ FDLLHandle := LoadLibrary(' ' );
3312
+ { $ELSE}
3315
3313
FDLLHandle := 0 ;
3316
- Result := HasHostSymbols();
3314
+ { $ENDIF}
3315
+ Result := HasPythonSymbolsInLibrary();
3317
3316
if Result then
3318
- LoadFromHostSymbols();
3317
+ LoadFromHostSymbols()
3318
+ else
3319
+ FDLLHandle := 0 ;
3319
3320
end ;
3320
3321
3321
3322
procedure TDynamicDll.LoadFromHostSymbols ;
@@ -3416,12 +3417,15 @@ function TDynamicDll.GetQuitMessage : string;
3416
3417
Result := Format( ' Dll %s could not be loaded. We must quit.' , [DllName]);
3417
3418
end ;
3418
3419
3419
- function TDynamicDll.HasHostSymbols : boolean;
3420
+ function TDynamicDll.HasPythonSymbolsInLibrary : boolean;
3420
3421
var
3422
+ LPy_GetBuildInfo: function: PAnsiChar; cdecl;
3421
3423
LPy_IsInitialized: function: integer; cdecl;
3422
3424
begin
3425
+ LPy_GetBuildInfo := Import (' Py_GetBuildInfo' , false);
3423
3426
LPy_IsInitialized := Import (' Py_IsInitialized' , false);
3424
- Result := Assigned(LPy_IsInitialized) and (LPy_IsInitialized() <> 0 );
3427
+ Result := Assigned(LPy_GetBuildInfo) and Assigned(LPy_GetBuildInfo())
3428
+ and Assigned(LPy_IsInitialized) and (LPy_IsInitialized() <> 0 );
3425
3429
end ;
3426
3430
3427
3431
procedure TDynamicDll.Quit ;
0 commit comments