1

Delphi 2007、32 ビットでコンパイルされた COM オブジェクトがあります。これで、64 ビット コンパイラを使用して Delphi XE3 に移植しました。新しい 64 ビット DLL で正常にコンパイルされますが、登録できません。

Admin を使用して DLL を登録しています。32 ビット DLL では正常に機能しますが、64 ビットでは機能しません。

「メモリロケーションへの無効なアクセス」と言い続けます

ここにヒントはありますか?

PS:私が使用するコマンドは単純%systemroot%\System32\regsvr32.exe test.dllです。

Windows 7 64 ビットに登録すると、「無効なメモリ ロケーションへのアクセス」と表示されます。Windows 8 64 ビットに登録すると、「ダイナミック リンク ライブラリの初期化ルーチンに失敗しました」と表示されます。

4

1 に答える 1

0

はい、原因がわかりました。ユニットの 1 つの初期化セクションでは、まだサードパーティの 32 ビット フローティング操作が使用されています。コードを削除すると、DLL が正常に登録されます。

win7 では、エラー メッセージは紛らわしいですが、win8 では、「ダイナミック リンク ライブラリの初期化ルーチンが失敗しました」と表示され、より明確な原因が示されます。

于 2013-03-21T13:41:54.663 に答える