0

いくつかの依存関係を持つ 32 ビット アプリケーションが動作しています。依存関係の大まかな見積もりは次のようになります-

[handshake_win32.exe] ----> [libhandshake32.dll] ----> [libeay32、ssleay32.dll] ----> [zlib1.dll]

コードを再利用するために、JNI を介して libhandshake32.dll を使用したいと考えています。JVM は 64 ビットなので、これらのライブラリを x64 アーキテクチャ用に再コンパイルする必要があると思います。

私の最初のターゲットは、現在のベースラインの handshake_win32.exe を x64 で実行することです。そのため、x64 用のすべての dll を再コンパイルしました。しかし、デバッグ モードを開始したときに再コンパイルが成功した後、メイン関数ですぐにスタック オーバーフローが発生します。

handshake_win32.exe の 0x000007f602f79567 で未処理の例外: 0xC00000FD: スタック オーバーフロー。

dumpbin で dll 署名を確認しようとしましたが、すべてのマシン タイプが x64 のようです。依存関係ウォーカーは、すべての x64 モジュールに対して次のエラー メッセージを表示します -

エラー: 暗黙的に依存するモジュールにエクスポート関数がないため、少なくとも 1 つのモジュールに未解決のインポートがあります。エラー: CPU タイプが異なるモジュールが見つかりました。

これは、MSVCR100.dll の x86 バージョンがロードされ、実際の dll のアーキテクチャが x64 であることを示しています。

この問題の考えられる原因を誰かが提案できますか?

前もって感謝します。

4

1 に答える 1