2010-12-04 87 views
1

函數定義。VC++ 6.0項目中的C2664錯誤轉換爲Visual C++ 2008

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項目屬性General,Character Set中將字符集更改爲Multibyte。

0

套裝屬性頁 - >配置參數 - > C/C++ - >語言 - >視wchar_t內置型 - >否(ZC:wchar_t-)

這將解決不能轉換參數1 '_bstr_t'爲'unsigned short *'錯誤

0

這與您使用舊版本MSXML和多字節字符串的事實有關。要解決該問題,請將「Tread Wchar_t as Built in Type」設置爲「No(/ Zc:wchar_t-)」。這將解決您的問題,但可能會破壞其他接口,您可能還需要在其他庫中更改它。

相關問題