ネイティブCコード用のC++/CLIラッパーを作成していますが、これは自分のObject
というtypedefを持ち、リンク時にC2872 'Object': ambiguous symbol
エラーが発生しています。コンパイラの出力は次のようになります。Visual Studioで 'Object'を処理する方法:あいまいなシンボル
1>C:\src\OS_kernel.h(27): error C2872: 'Object': ambiguous symbol
1>C:\src\OS_types.h(261): note: could be 'ObjectStruct *Object'
1>C:\src\OS_kernel.h(27): note: or 'System::Object'
それは私がC++/CLIのラッパーの目的のために、このネイティブCコードをからかっていますことを言及する価値があるかもしれません。利用可能なソースコードがない場合には利用できない可能性のある解決策を開くかどうかはわかりません。どの定義を使用するかを指定する方法はあると思いますが、その指定方法はわかりません。それは可能ですか? ObjectStruct *Object
を使用するよう指定します。
モックコードを変更する必要がない場合は、数百または数千の個別の場所になる可能性があるのですばらしいことです。
また、Buffer
とBoolean
のように、ネイティブライブラリで使用されている他のタイプの場合にもこのエラーが発生します。
グローバルスコープCの 'Object'を参照するには、スコープ解決演算子' :: 'で' :: Object'を使用できるはずです。 – crashmstr
それはうまくいった!悲しいことに、この解決策は私がこのあいまいなエラーがモックコードで発生するすべての場所に触れる必要があることを意味します。 –