Frage

Ich habe eine Anwendung, die wir von 32bit auf 64bit zu migrieren versuchen. Es ist .NET, kompiliert die x64-Flags verwenden. Allerdings haben wir eine große Anzahl von DLLs in Fortran 90 für 32-Bit kompiliert geschrieben. Die Funktionen in dem Fortran-DLLs sind recht einfach: Sie Daten setzen in, Sie Daten herausziehen; kein Staat jeglicher Art. Wir haben nicht auch eine Menge Zeit damit verbringen, insgesamt vielleicht 3%, aber die Berechnungslogik führt es ist von unschätzbarem Wert.

Kann ich nenne irgendwie die 32-Bit-DLLs von 64-Bit-Code? MSDN schlägt vor, dass ich nicht kann, period. Ich habe einige einfache Hacking und überprüft diese. Alles wirft eine ungültige Eintrag Punkt Ausnahme. Die einzig mögliche Lösung, die ich bisher gefunden habe, ist für alle der 32-Bit-DLL-Funktionen COM + Wrapper zu erstellen und COM aus dem 64-Bit-Prozess aufrufen. Dies scheint ein ziemlich Kopfschmerzen. Wir können auch den Prozess in WoW Emulation laufen, aber dann würde der Speicher Obergrenze nicht erhöht werden, bei etwa 1,6 GB Capping.

Gibt es eine andere Möglichkeit, die 32-Bit-DLLs von einem 64-Bit-CLR Prozess anrufen?

War es hilfreich?

Lösung

Sie werden die 32-Bit-DLL in einen separaten 32-Bit-Prozess geladen haben müssen, und haben Sie Ihren 64-Bit-Prozess mit ihm kommuniziert über Interprozesskommunikation. Ich glaube nicht, gibt es eine Möglichkeit, ein 32-Bit-DLL können auf andere Weise in einen 64-Bit-Prozess geladen werden.

Es ist ein ziemlich guter Artikel hier:

Zugriff auf 32- Bit-DLLs von 64-Bit-Code

Andere Tipps

Sie benötigen eine ausführbaren Prozesse als 32-Bit-Prozesse zu schreiben (im Vergleich zu Any CPU oder x64), so dass sie dann mit WOW32 für Vista geladen werden. Dies wird sie in dem 32-Bit-Emulationsmodus laden, und Sie werden den Einstiegspunkt Problem nicht. Sie können Sie Bibliotheken in AnyCPU-Modus verlassen, aber Ihre ausführbare Dateien haben als x86 kompiliert werden.

John Antwort ist richtig, wenn Sie nicht Ihre vorhandene DLLs wollen neu zu kompilieren; aber das könnte eine Option für Sie als gut.

Unser Team ist derzeit unseren x86-Fortran-Code Migration auf x64 den Speicher Obergrenze zu erhöhen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top