Ну, вы не опубликовали никакого кода, поэтому я просто предположу, что у вас есть строка широких символов, определенная как
WORD wszMyAwesomeStringThatsGonnaBePassedToAnAPIatSomePoint[129] = "Booga!";
Видите, в VS2005 MS получает спрограмма и делает wchar_t встроенным типом.До этого это был просто typedef для ... unsigned short
.Это было отлично для ваших целей, поскольку и WORD *, и LPOLESTR были и просто псевдонимами для unsigned short*
.
Но теперь wchar_t является встроенным типом, и LPOLESTR определен - при условии, что вы не компилируете с определенным OLE2ANSI - как __RPC_string wchar_t*
... Таким образом, ваш код ломается.
Если вы уже гневно печатаете: «ЛОЖЬ !!! Я НЕ ИСПОЛЬЗУЮ WORD
В ЛЮБОМ МЕСТЕ !!!», стоп - вы вполне можете использовать другой typedef или даже #define, которые в итоге приводят к тому, что ваша переменная определяется как массив WORD
s.Возможно, вы используете какой-то огромный сложный фреймворк, который предварительно компилирует XML в структуры, содержащие массивы WORD;может быть, кто-то другой написал код для вас, и вы даже не посмотрели его.
Но так как вы не опубликовали код, показывающий нам, как вы объявляете строку, о которой идет речь, я не могу сказать.