1

いくつかのサードパーティ DLL を使用するプロジェクトがあり、展開用のセットアップ プロジェクトに取り組んでいます。プログラムは、Visual Studio 2005 内から実行 (デバッグ) すると正常に実行されますが、「インストール」すると実行されません。

DLL はアプリケーション フォルダに正しくコピーされます。私の理解では、DLL はインストーラーによって登録されていません。「次のエラーのため、CLSID { GUID } を持つコンポーネントの COM クラス ファクトリの取得に失敗しました: 80040154」

セットアップ プロジェクトでは、各 DLL アセンブリの "Register" プロパティが "vsdraCOM" に設定されており、これが登録をトリガーすると考えられていました。

編集:私のアプリケーションと同様に、それらはすべて.NETアセンブリであるように見え、登録は問題になりません。これを反映してタイトルが変更されました。

これはかなり基本的なことのように思えますが、そうではありません。

4

3 に答える 3

0

Dependency Walker ( http://dependencywalker.com/ ) を使用して、DLL が他に何を読み込もうとしているかを確認します。

InprocServer32 には、正常に登録された DLL へのパスが含まれているはずです。

于 2010-01-20T00:31:08.107 に答える
0

使用されている DLL は、インストーラーで、ベンダーからのドキュメント、コード例などを含む SDK パッケージに含まれていました。新しいコンピューターに移動したときに転送されたすべての緩いファイルがありましたが、新しいコンピューターで実際にインストーラーを実行していないことに気づきませんでした。

SDK をインストールすると、必要な登録を行う必要があります。アプリケーションが正しく動作するようになりました。両方のインストーラーを実行してターゲット マシンにインストールできますが、これは問題ありません。

于 2010-01-20T20:49:01.480 に答える
0

それらが自己登録する (つまり、regsvr32 で登録できる) 通常の COM オブジェクト (.NET アセンブリではない) である場合は、必要vsdraCOMSelfRegありませんvsdraCOMvsdraCOMCOM 相互運用のために .NET アセンブリを登録するために使用されます。

ええ、それはまったく直感的ではありません。

于 2010-01-20T00:48:49.173 に答える