1

私はいくつかの.dllファイルを必要とするWindowsフォームアプリケーションを扱っています。

初めてそれを完成させ、ビルドして実行すると、うまくいきました。(64 ビット プロセッサ、64 ビット Windows 7、Visual Studio 2012)

次に、プロジェクト全体をコピーして他の PC (64 ビット プロセッサ、32 ビット Windows 8、Visual Studio 2012) に貼り付けます。実行できませんでした。「Class not registered, exception form HResult 0x080040154 (REGDB_E_CLASSNOTREG)」というエラー メッセージが表示されます。

私は解決策を試しました:

  1. プラットフォームを anyCPU から x86 に変更しましたが、機能しませんでした
  2. すべての .dll ファイルを system32 フォルダーに配置しましたが、機能しませんでした
  3. regsvr32 を使用してクラスを登録しようとしましたが、.dll ファイルが「読み込まれましたが、エントリ ポイントが見つかりませんでした」というエラー メッセージが表示されました。

また、Visual Studio で Form.cs[design] を開くことさえできません。

4

3 に答える 3

1

gflags Show loader snapsを試すことができます。

これを gflags で確認し、windbg をアプリにアタッチすると、モジュールの読み込みに関するすべての詳細情報が表示されます。おそらく、次のようなエラーが表示されるでしょう。

LdrpGenericExceptionFilter - エラー: 関数 LdrpSnapIAT で例外 0xc0000139 が発生しました

于 2014-06-24T05:21:25.243 に答える
1

依存する dll が wi​​n32 で動作するかどうかを調べます。

64でのみ利用可能な他のものに依存するdllが原因である可能性があります。

于 2013-04-03T04:13:57.010 に答える
0

Hans が示唆するように、ActiveX コンポーネントを使用しているようです。それを提供している dll を見つけてから、最初に regsvr32 で登録します。

于 2013-04-03T04:13:00.727 に答える