質問: コンパイルエラーが解消出来ません。 ご教授下さい。 ■コンパイルエラー内容 error C2872: 'MarketplaceWebServiceProducts' : あいまいなシンボルです ■やりたいこと AmazonのAPI「Marketplace Web Service API (MWS)」のHello world 以下ページの右上 オレンジ色の「Download」ボタンから入手できる 「MWSProducts_2011-10-01_v2017-03-22.dll」の使用 ■DLLの使用 Visual Studioの対象プロジェクトのプロパティから、 上記DLLの参照を追加しました ■コーディング ``` using namespace MarketplaceWebServiceProducts;//←ここはコンパイルOK using namespace MarketplaceWebServiceProducts::Mock;//←★ここで上記コンパイルエラー ``` ■ご質問 上位の「MarketplaceWebServiceProducts」が正常なのに、 下位の「Mock」を付けるとあいまいなシンボルになるのはなぜでしょうか。 解決策をご教授ください。(可能であれば実装をご提供ください) ■環境 Visual Studio .Net 4.0 C++/Cli
回答: C++言語ではコンパイル時にヘッダーファイルを参照し、リンク時にライブラリと結合します。ところが.NETアセンブリはDLLファイルで完結しておりヘッダーファイルが存在しません。 そこでVisual C++では、#usingディレクティブが用意されています。 ``` #using "MWSProducts_2011-10-01_v2017-03-22.dll" ``` と記述すると、C++コンパイラーは.NETアセンブリを読み込み、相当するヘッダーファイルへ変換し`#include`されたかのように扱います。コンパイルオプション`/FU`でも同等の結果を得ることができます。 > > Visual Studioの対象プロジェクトのプロパティから、 > > 上記DLLの参照を追加しました > > > 上記の通りですので、残念ながら参照方法が間違っています。