3

32 ビット マシンで開発された Flash10c.ocx を使用する WPF アプリがあります。開発マシンに ocx を登録する必要はありませんでした。最新のフラッシュをインストールし、リファレンスを追加して、コーディングを開始しました。64ビットシステムでテストすると、古い「クラスが登録されていません」というメッセージが表示されます。これは、ocxをregsvrする必要があることを意味すると思います。32 ビットの ocx (dev システムの C:\Windows\System32\Macromed にあるので 32 ビットだと確信しています) を 64 ビット システムにコピーして登録しても問題ありませんか?

更新: regsvr32 /i flash10c.ocx で "The module flash10c.ocx las loaded but the call to DllRegisterServer failed with error code 0x80004005" というエラーが発生する

更新 2: 私はこれをあきらめ、32 ビット システムでのみ Flash を実行することにしました。誰かがより良い答えを持っている場合は、それを聞きたいのですが、現在の提案を回答済みとしてマークし、その努力に正当な評価を与えます。

4

2 に答える 2

4

うまくいかない理由は、WPF アプリケーションが 64 ビットで実行されているためです。

.NET アプリケーションは 32 ビットまたは 64 ビットとして実行できます。CLR は、アプリケーションが実行されているアーキテクチャ (この場合は 64 ビット) にアプリケーションを JIT します。

ただし、64 ビット アプリケーションで 32 ビット dll をロードする必要がある場合を除きます。これは不可能です。64 ビット プロセスは、64 ビット dll のみをロードできます。32 ビット プロセスは、32 ビット dll のみをロードできます。COM オブジェクトの登録をいくらいじっても、これは変わりません。レジストリ エントリが見つからないという問題ではありません。

Adobe Flash は 32 ビット dll としてのみ提供されます。現在、Adobe には 64 ビット版がありません (できれば今後もありません)。

WPF .NET アプリケーションが 32 ビット フラッシュ dll をロードするには、32 ビット プロセスとして実行されている必要があります。Visual Studio のビルド構成で、.NET アプリケーションを強制的にx86ではなくのみをターゲットにする方法がありますAny CPU

CPU ターゲットの選択肢は次のとおりです。

  • 任意の CPU
  • x86
  • x64
  • イタニウム

Flash には、当然のことながら、Itanium バージョンもありません。

ターゲット cpu の詳細については、 StackOverflow: Visual Studio の「任意の CPU」ターゲットを参照してください。

于 2010-09-09T14:26:03.317 に答える
3

フラッシュ インストーラーは 32 ビット OS 専用である可能性があります。そのため、64 ビット マシンに正しくインストールされませんでした。このエラーは、手動で ocx を登録する必要があることを意味しますが、正常に登録されるかどうかはまったく別の問題です。

編集 1 : Adob​​e の 64 ビット システムのサポートに関する声明は次のとおりです(何もありません) (64 ビット マシンで 64 ビット ブラウザを使用していると仮定します)。

編集 2 : 64 ビット Windows 上の Flash に関する別のフォーラム メッセージ

于 2009-09-12T15:26:59.500 に答える