2010-12-04 59 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-)”。这将解决您的问题,但可能会破坏其他接口,您可能还需要在其他库中更改它。

相关问题