ошибка C2664 в проекте VC ++ 6.0 для преобразования в Visual C ++ 2008 - PullRequest
1 голос
/ 04 декабря 2010

Определение функции.

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

Называя это:

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

Ошибки компиляции:

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

Работает нормально в Visual 6.0.

Ответы [ 3 ]

0 голосов
/ 10 ноября 2011

Задать страницы свойств -> Параметры конфигурации -> C / C ++ -> язык -> Обрабатывать WChar_t как встроенный тип -> Нет (Zc: wchar_t -)

Это исправит невозможность преобразования параметра 1от '_bstr_t' до 'unsigned short *' error

0 голосов
/ 28 мая 2015

Это как-то связано с тем, что вы используете старую версию MSXML и многобайтовые строки. Чтобы решить эту проблему, установите «Tread Wchar_t as Built in Type» на «No (/ Zc: wchar_t-)». Это решит вашу проблему, но может сломать другие интерфейсы, возможно, вам придется изменить это и в других библиотеках.

0 голосов
/ 04 декабря 2010

Трудно понять ваш вопрос, но я предполагаю, что он может быть связан с Unicode.VC ++ 6.0 создает не-Unicode-приложение по умолчанию, а VC ++ 2008 создает Unicode-приложение.Это может привести к различным ошибкам, связанным с типами строковых указателей.Попробуйте изменить набор символов на Многобайтовый в свойствах проекта VC ++ 2008, Общие, Набор символов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...