-1

VariantCopy メソッドを使用しているときに、次のコンパイル エラーが発生します。

error C2664: 'VariantCopy' : cannot convert parameter 2 from 'const VARIANT *' to 'VARIANTARG *'

このエラーを解決する方法はありますか? プリプロセッサ ディレクティブまたはライブラリを含める必要がありますか?

4

2 に答える 2

1

問題は、メソッドが異なるさまざまな Windows SDK にあったため、問題が発生しました。

于 2012-10-31T07:51:25.517 に答える
0

VariantCopyかつての署名

HRESULT VariantCopy( 
  VARIANTARG FAR* pvargDest, 
  VARIANTARG FAR* pvargSrc 
); 

奇妙ですが、入力パラメーターが const ではないため、コードでそのことに注意する必要があります。

MSDN のドキュメントで理由が説明されています。関数は変更される可能性がありますpvargSrc

pvargSrc が VT_DISPATCH または VT_UNKNOWN の場合、オブジェクトの参照カウントをインクリメントするために AddRef が呼び出されます。

アップデート

最新の SDK では、2 番目のパラメーターが になりましconstた。ただし、MFC ソースでこれを見つけました。

static HRESULT copy(_Out_ VARIANT* p1, _In_ const VARIANT* p2) 
{
    p1->vt = VT_EMPTY; 
    return VariantCopy(p1, const_cast<VARIANT*>(p2));
}
于 2012-08-22T11:50:45.267 に答える