web-dev-qa-db-ja.com

エラーの解決MSB8011:出力の登録に失敗しました

奇妙なエラー:

エラーMSB8011:出力の登録に失敗しました。ユーザーごとのリダイレクトを有効にするか、コマンドプロンプトから昇格された権限でコンポーネントを登録してみてください。 C:\ Program Files\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets 744

ActiveXコントロールでOpenSceneGraph(OSG)を使用しようとすると、このエラーが発生しました。グーグル検索は、実際には問題を解決しなかった、またはエラーの正確な原因を特定しなかったすべての種類の解決策を示したので、私は解決策を1つの場所に置きたいと思います:ここに。

私はそれに対する解決策を見つけました、そして彼らが同じ問題に遭遇した場合に人々が彼らの解決策を見つけることができるように、私自身の質問にすぐに答えるでしょう。

12
Nav

このエラーは、Visual Studio(2010)がOCXを作成するためにプログラムに必要な依存dllファイルを見つけられない場合に発生します。 OCXはプロジェクトのデバッグディレクトリ(デバッグビルド用)に作成され、依存DLLがあるフォルダーとして「作業ディレクトリ」(プロジェクト設定内)を指定しても、VisualStudioがDLLを見つけるのに役立ちません。

ここでの問題は(これが問題を解決するのに頭痛の種になる理由です)、Visual StudioがOCXを作成できなければ、OCXでDependencyWalkerを実行できない場合があります。したがって、不足しているDLLが問題であることがわかりません。

どのDLLをデバッグフォルダに配置する必要があるかがわかっている場合は、そこに配置するだけでエラーが消えます。わからない場合、およびOCXが作成されなかった場合は、プロジェクト設定>リンカー>一般>出力の登録に移動し、値を「いいえ」に設定します。これにより、OCXが作成されますが、依存DLLが必要な場合の登録プロセスは実行されません。

OCXをダブルクリックすると、Dependency Walkerに黄色の円のアイコンが付いた不足しているDLLが表示されます。これらのDLLをOCXと同じフォルダーに配置するだけで、プログラムは正常に機能します。とても簡単です。

22
Nav

プロジェクトがCOMオブジェクトを登録しようとしているが、それを行うための十分な権限がないことが問題である可能性があります。 Windows 7および8では、プロピレン32には管理権限が必要です。

あなたにできることは次のとおりです。デスクトップにC:\ Windows\SysWOW64\cmd.exe(32ビットコンソール)へのショートカットを作成します。右クリックし、[プロパティ]-> [詳細設定]-> [管理者として実行]をオンにします。ショートカットを起動し、ユーザーアクセス制御がポップアップすることを確認して、[はい]をクリックします。この特別なコンソールウィンドウからビルドを開始します。

7
Tamas Demjen

Runを「管理者」VS2015として使用してみましたが、問題を解決できました。

2
EW28x021

MSB8011は、プロピレン32で問題が発生するたびに発生する一般的なエラーのようです。私の場合、ユーザーごとの登録が「はい」に設定されていると、PASSWORD32はコード4で終了しましたが、構築していたDLLはDllInstallエントリポイントを定義していませんでした。

1
Mike

VS2013を介してこれを行うこともできますIDEプログラムファイルのショートカットからこのIDE)を起動し、Visual Studio 2010/2013を選択してから、右クリックして[名前を付けて実行]を選択します管理者、IDE起動後、ソリューションファイルを開いてビルドすると、regsrv32 DLL/COM登録のためにこのようなエラーが発生することはありません

1
Suresh

Propertyページで

構成プロパティ->ビルドイベント->ビルド後イベント

あなたはそれを/Serviceと呼んでいるかもしれません。以下に示すようにオプションを変更すると役立つ場合があります。

変更前:

Before modification

変更後:

After modification

1
Stephen Philip