Ich habe im Firmennetz jetzt eine Entwicklungsrechner auf Basis VMWare.
Ich habe dort eine fast identische Umgebung wie auf dem lokalen Notebook.
Aber beim Laden der fbclient.dll gibt es Probleme.
Ich habe zum Testen folgende Routine:
Delphi-Quellcode:
procedure TForm1.BtnLoadDLLClick(Sender: TObject);
Const
FBFileName = '
c:\Temp\fbclient.dll';
FBFileName2 = '
c:\Program Files\Firebird\Firebird_3_0\WOW64\fbclient.dll';
FBFileName3 = '
e:\FBDll\fbclient.dll';
FBFileName4 = '
c:\Program Files\Firebird\fbclient.dll';
FBFileName5 = '
c:\Windows\SysWOW64\fbclient.dll';
dxFileName = '
dx.language.dll';
procedure LoadLib(
const AFileName:
string);
Var
LHandle: NativeUInt;
LError: Cardinal;
begin
assert(FileExists(AFileName));
LHandle := LoadLibraryEx(PChar(AFileName), 0, LOAD_WITH_ALTERED_SEARCH_PATH);
try
LError := GetLastError;
Log.Lines.Add(Format('
DLL: %s Handle: %d Error: %d', [AFileName, LHandle, LError]));
finally
if (LHandle > HINSTANCE_ERROR)
then
FreeLibrary(LHandle);
end;
end;
begin
Log.Lines.Clear;
LoadLib(TPath.GetLibraryPath + '
fbclient.dll');
LoadLib(FBFileName2);
LoadLib(dxFileName);
LoadLib(FBFileName);
LoadLib(FBFileName3);
LoadLib(FBFileName4);
LoadLib(FBFileName5);
end;
Als Ergebnis erhalte ich:
Code:
DLL: E:\work\Spielen\
Win32\Debug\fbclient.dll
Handle: 0 Error: 126
DLL: c:\Program Files\Firebird\Firebird_3_0\WOW64\fbclient.dll
Handle: 1411383296 Error: 0
DLL: dx.language.dll
Handle: 49348608 Error: 0
DLL: c:\Temp\fbclient.dll
Handle: 0 Error: 126
DLL: e:\FBDll\fbclient.dll
Handle: 0 Error: 126
DLL: c:\Program Files\Firebird\fbclient.dll
Handle: 0 Error: 126
DLL: c:\Windows\SysWOW64\fbclient.dll
Handle: 0 Error: 126
Wie man sehen kann, wird nur die
DLL c:\Program Files\Firebird\Firebird_3_0\WOW64\fbclient.dll geladen.
Alle anderen findet er nicht (Code 126).
Die fbclient.dll Dateien in den anderen Verzeichnissen sind aber identisch.
Eigene
DLL's werden auch geladen.
Sehr interessant folgendes:
Lege ich ein TIBCConnection auf das Formular, connecte zur Entwurfszeit und starte aus der
IDE, dann werden alle fbclient.dll geladen.
[EDIT]
OK, er lädt sicher die
dll nicht, wenn schon eine geladen ist...[/EDIT]
Hat jemand eine Idee, was hier die Ursache ist und wie man das beheben kann?
Frank