2009-03-12 11 views
5

を「XXXはすでに存在するオブジェクト」私は、Visual StudioでATLシンプルオブジェクトウィザードを使用して、私のDLLに2005ATLシンプルオブジェクトウィザード - エラー

を新しいCOMオブジェクトを作成しようとしています私はのための短い名前を入力します。オブジェクト、および他のすべてのフィールドが導出されます。しかし

、私はウィザードでをクリックすると、次のエラーメッセージが起動します:

Object 'IXxxInterfaceName' already exists 

私はIXxxInterfaceNameへのすべての参照のための私の全体のソリューションを検索しましたし、それがどこにも定義されて見ることができません。

どうウィザードは、それがすでに存在していると判断していますか?

答えて

2

ウィザードは、オブジェクト名が既に存在すると判断し、なぜ私が見つけたことはありません - 私は何かが私は追跡できなかったことをどこかにキャッシュされた推測しています。最後に

は、私はそれを追加する許可を作成インタフェース名の末尾に2を付加しました。次に、IXxxInterfaceName2のすべての出現をIXxxInterfaceNameに置き換えました。この後、すべてがうまくいった。

私が今までこの問題の根本原因を追跡した場合、私は答えを更新します。

+0

問題は依然として存在し、2015年です。既存の 'ATLシンプルオブジェクト'を削除すると、再生成できません。少なくとも私はそれを行う方法を見つけていない。私は以前の試みからレジストリを掃除することに頼っています。マイクロソフトはこの問題を決して所有していません。 – rtischer8277

+0

この2回目のATL-Simple-Objectコード生成エラーの回避策は、オートメーションを使用して新しいMFCプロジェクトを作成することです。 ATLシンプルオブジェクトの新しいクラスを追加します。その後、新しく生成された。 .... rgsと.hと.cppファイルをプロジェクトに上書きします。 – rtischer8277

+0

.idlファイルを確認してください。 「ATLシンプルオブジェクト」を作成すると、インターフェイスステートメントが追加されます。これらの追加された行をすべて削除すると、エラーが消えます。 – rtischer8277

1

参照しているライブラリで定義されていますか?

+0

それも可能です。あなたが私が参照しているすべての図書館の無理な力に頼らなくても、これを理解できる簡単な方法を考えることができますか? – LeopardSkinPillBoxHat

+0

実際、私はそれについて考えるので、参照している図書館で使用される可能性は低いです。インターフェイス名には、製品内のすべてのインターフェイスで使用される標準プレフィックスがあります。だから私はサードパーティのライブラリが同じ名前を使用することは疑う。 – LeopardSkinPillBoxHat

+0

それは奇妙なものだ。名前を少し変更するとどうなりますか? –

0

VS 2008でも発生します。しかし、ビルドオプションからクリーンソリューションとクリーンプロジェクトはこれを解決します:-)

関連する問題