Hallo,
mir ist klar, dass es ein Wunder wäre, wenn mir hiermit jemand helfen kann, aber in meiner Not versuche ich ALLES um es vielleicht doch noch hinzukriegen.
Also: ich stehe vor folgendem Problem: meine Software verwendet eine Bibliothek die das COM Interface unterstützt, aber leider NUR die 32-bit Version. Unsere Software sollte aber - da sie bei bestimmten Anwendungen VIEL Hauptspeicher benötigt - für 64-bit kompiliert werden. Ich habe einen interessanten Work-Around im Netz gefunden, der sogar teilweise funktioniert:
techtalk.gfi.com/32b...t-64bit-environment/
Mit diesem Registry-Hack konnte ich erfolgreich eine alte 32-bit Barcodelibrary in ein 64-bit Delphiprogramm integrieren.
Übrigens habe ich mir dafür ein kleines Hilfsprogramm geschrieben, da das Anlegen der Registry-Keys sehr nervig sein kann, insbesondere wenn die Library aus mehreren Elementen mit eigenen GUIDs besteht. Außerdem muss ich zu der Anleitung ergänzend sagen, dass die GUIDs offenbar nicht immer nur in CLSID stehen sondern auch in TypeLib und Interface.
Ermutigt von dem erfoglreichen Test wollte ich die andere Bibliothek (es handelt sich dabei um die Bildverarbeitungsbibliothek "Halcon 13" von der Firma MVTec) ebenfalls einbinden. Dazu habe ich ein Beispielprogramm geladen, was unter 32-bit fehlerfrei läuft. Unter 64-bit kam bisher schon beim Versuch zu kompilieren eine Fehlermeldung (irgendwas mit Mismatch x86 und x64). Nach dem Registry-Hack kompiliert er klaglos. Ich bekomme jedoch sehr bald eine Exception:
---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt matching.exe ist eine Exception der Klasse EOleError mit der Meldung 'Das Fenster-Handle des OLE-Elements nicht verfügbar' aufgetreten.
---------------------------
Anhalten Fortsetzen Hilfe
---------------------------
und danach folgende:
---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt matching.exe ist eine Exception der Klasse EOleException mit der Meldung 'Ausnahmefehler des Servers' aufgetreten.
---------------------------
Anhalten Fortsetzen Hilfe
---------------------------
Leider kann ich die erste Exception nicht wirklich lokalisieren. Sie tritt beim Verlassen von "FormCreate" auf,und zwar wohl irgendwo in c:\Windows\system32\Kernelbase.dll
die zweite folgt nach Ausführen der Codezeile:
Img.Dispobj(Window);
Hat hier irgendjemand vielleicht schon ähnliches Probiert und ist auf die gleichen Fehler gestoßen? Gibt es die Chance für ein Workaround. Alles Beknien der Entwickler für eine 64-bit Version der COM Bibliothek hat bisher leider nichts gebracht...