

コンパイルエラーが解消出来ません。  
ご教授下さい。

■コンパイルエラー内容  
error C2872: 'MarketplaceWebServiceProducts' : あいまいなシンボルです

■やりたいこと  
AmazonのAPI「Marketplace Web Service API (MWS)」のHello world

以下ページの右上 オレンジ色の「Download」ボタンから入手できる  
「MWSProducts_2011-10-01_v2017-03-22.dll」の使用  
<https://developer.amazonservices.jp/doc/products/products/v20111001/cSharp.html>

■DLLの使用  
Visual Studioの対象プロジェクトのプロパティから、  
上記DLLの参照を追加しました

■コーディング

[code]

    using namespace MarketplaceWebServiceProducts;//←ここはコンパイルOK
    using namespace MarketplaceWebServiceProducts::Mock;//←★ここで上記コンパイルエラー
    
[/code]

■ご質問  
上位の「MarketplaceWebServiceProducts」が正常なのに、  
下位の「Mock」を付けるとあいまいなシンボルになるのはなぜでしょうか。  
解決策をご教授ください。（可能であれば実装をご提供ください）

■環境  
Visual Studio  
.Net 4.0  
C++/Cli


CC BY-SA 4.0
2019-01-19T07:49:54.020
52113
2019-02-20T05:01:35.297
31841
question
c++ visual-studio .net c++-cli
コンパイラエラー C2872 あいまいなシンボルです。


C++言語ではコンパイル時にヘッダーファイルを参照し、リンク時にライブラリと結合します。ところが.NETアセンブリはDLLファイルで完結しておりヘッダーファイルが存在しません。  
そこでVisual C++では、[#usingディレクティブ](https://docs.microsoft.com/en-
us/cpp/preprocessor/hash-using-directive-cpp?view=vs-2017)が用意されています。

[code]

    #using "MWSProducts_2011-10-01_v2017-03-22.dll"
    
[/code]

と記述すると、C++コンパイラーは.NETアセンブリを読み込み、相当するヘッダーファイルへ変換し`#include`されたかのように扱います。[コンパイルオプション`/FU`](https://docs.microsoft.com/en-
us/cpp/build/reference/fu-name-forced-hash-using-
file?view=vs-2017)でも同等の結果を得ることができます。

* * *

> Visual Studioの対象プロジェクトのプロパティから、  
>  上記DLLの参照を追加しました

上記の通りですので、残念ながら参照方法が間違っています。


CC BY-SA 4.0
2019-01-19T13:37:47.880
52120
2019-01-19T13:37:47.880
4236
52113
answer