2009-06-11 49 views
5

以前のVCXで、VS 2008に移行していたC++プロジェクトを、以前のMSXML 3の代わりにMSXML 6を使用するように変更しています。 コードはそれエラーC2011: 'MSXML2 :: IXMLDOMImplementation': 'struct'型の再定義

# import "msxml3.dll" 

をインポートすることによって、我々はMSXML3を使用していたVC6にいたとき、私は私がこれと他のいくつかの同様のエラー エラーC2011を取得し、プロジェクトをコンパイルするときにこれは、この後

# import "msxml6.dll" 

と置き換えました。 'MSXML2 :: IXMLDOMImplementatio n ':' struct '型の再定義

上記のエラーはmsxml3.tlhファイルにあります。

1)msxml3がまだ使用されているのはなぜですか?

2)私は何とか自動的に私のプロジェクトに含まれているMSXML.hに問題を絞り込んだ。どうしてこれなの?

3)MSXML.hで参照されているMSXMLのバージョンは何ですか?

4)なぜVC++には自動的にヘッダファイルがたくさん含まれていますか?ヘッダファイルをインクルードしたくない場合はどうすればいいですか?

5)C++プロジェクトでMSXML6を使用する正しい方法は何ですか? #import、header file ?????

6)この問題を解決するにはどうすればよいですか?

私にはいつでも.netを与えてください。とても清潔です。 VC++プロジェクトは混乱します。

答えて

1

the MS docoumentation on MSXMLをご覧ください。

.dllをインポートすると、.thlファイルと.tliファイルが2つ作成されます。削除したことを確認してください。

すべてのインクルードディレクトリが正しい場所を指していることを確認してください。

msxml3をプロジェクトのどこかにインポートしていないことを確認してください。

msxml.hを見つけるには、CTx + SHIFT + Fキーを押して、 'msxml'のソリューション全体を検索してください。< - 正しくインポートしていれば、.hがないことに注意してください。次の:

#include <msxml6.dll> 

は、そのいくつかを試してみてください...

+0

あなたは#DLLを含めることができますか? – bobbyalex

+0

私はプロジェクトをきれいにしました。 tlhおよびtliファイルが自動的に再作成されます。 私はmsxml3のソリューション全体を検索しましたが、何も残っていません。そのすべてのmsxml6。 – bobbyalex

0

私はmsxml.hの名前を変更し、ビルドをやってみたいです。 msxml.hを含むファイルが表示されます。

2

#importディレクティブの構文を確認してください。 importディレクティブ(またはrename_namespace)のrename属性を使用して、インポートされた要素の名前を変更できます。複製された要素との競合を解決します。

こちらをご覧ください:in MSDN

時にはインクルージョン順序の変更(はい - それらをコメントアウトすることによって含めるとインポート文の異なる順序を試してみてください)

を単にクロス、MSミスと戦うしないでくださいそれらの;)

関連する問題