PlatformSDK + MSXML4

[戻る]
いろは 2004/01/19(月) 11:43:23
いろはです。早速ですが…

PlatformSDK+MSXML4SP2でコンパイルエラーが出るようになってしまいました。
(VC6+SP5 MFC使用)
PlatformSDKを使用しないとコンパイルエラーは出ません。
エラーの内容は
error C2872: 'IXMLDOMNode' : あいまいなシンボル
です。

----- ソース抜粋XXXX.h(ドキュメントクラスヘッダー) -----
#import "msxml4.dll" named_guids raw_interfaces_only
using namespace MSXML2;

class XXXX : public CDocument
{
   void YYYY( IXMLDOMNode* pNode );   // メンバ関数
};

PlatformSDKの使用法が間違っているのでしょうか?
PlatformSDKは2003年2月版をインストールしました。
PlatformSDKをインストール後、スタートメニューから
"Register PSDK Directories with Visual Studio"
を実行しました。Registerすると、上記ソースがエラーになり、
Unregisterすると正常にコンパイルされます。

以上、よろしくお願いします。

渋木宏明(ひどり) [HomePage] 2004/01/19(月) 23:39:33
>error C2872: 'IXMLDOMNode' : あいまいなシンボル>#import "msxml4.dll" named_guids raw_interfaces_only
>using namespace MSXML2;

と、Platform SDK にある IXMLDOMNode の定義が被ってるんじゃないですか?

>using namespace MSXML2;

をやめて

>void YYYY( IXMLDOMNode* pNode );   // メンバ関数

void YYYY( MSXML2::IXMLDOMNode* pNode );   // メンバ関数

としても、変化はありませんか?

いろは 2004/01/20(火) 09:15:06
[[解決]]
渋木様、回答ありがとうございます。

>>using namespace MSXML2;
>
>をやめて
>
>>void YYYY( IXMLDOMNode* pNode );   // メンバ関数
>
>void YYYY( MSXML2::IXMLDOMNode* pNode );   // メンバ関数
>
>としても、変化はありませんか?

変化はありました。ソースの方もMSXML2::***とする事でビルドできました。
namespaceを使用しなければ、良いのだろうと言うことは予想していたのですが、
すべてを修正するとなると、気が遠くなる…
(いくつかのプロジェクトで修正を加える必要があるので)
ということで、質問していたのです。

地道に修正する事にいたします。

ありがとうございました。

古いスレッドには追加発言できません。