2010-12-04 16 views
1

関数定義。Visual C++ 2008に変換するVisual C++ 6.0プロジェクトのC2664

inline VARIANT_BOOL ISAXXMLReader::getFeature (unsigned short * pwchName) ; 

それを呼び出す:

_bstr_t bstrFeature = featureName.c_str(); 
HRESULT hr = m_reader->getFeature(bstrFeature, &vfValue); 

コンパイラerrirs:

error C2664: 'MSXML2::ISAXXMLReader::getFeature' : cannot convert parameter 1 
from '_bstr_t' to 'unsigned short *' 
d:\formaanalyser_29_novixbrl_export_ct_600_negatelablel_word\formaanalyser\ 
xmlsupport\xmlparser.cpp 187 

それは視覚的な6.0で正常に動作しています。

答えて

0

あなたの質問を理解することは難しいですが、私の予想は、それがUnicodeに関連している可能性があるということです。 VC++ 6.0はデフォルトで非Unicodeアプリケーションを作成し、VC++ 2008はUnicodeアプリケーションを作成します。これにより、文字列ポインタ型に関連するさまざまなエラーが発生する可能性があります。 VC++ 2008のプロジェクトプロパティ、一般、文字セットで文字セットをマルチバイトに変更してみてください。

0

セットのプロパティページ - >設定パラメータ - > C/C++ - >言語 - >ビルトインタイプとしてはwchar_tを扱う - >いいえ(Zcは:wchar_t-)

これからパラメータ1を変換することはできません修正します'_bstr_t'を 'unsigned short *'エラー

0

これは古いバージョンのMSXMLとマルチバイト文字列を使用していることと関係があります。この問題を解決するには、「タイプの組み込みとしてWchar_tを実行する」を「いいえ(/ Zc:wchar_t-)」に設定します。これで問題は解決しますが、他のインターフェイスが破損する可能性がありますので、他のライブラリでも変更する必要があります。

関連する問題