为什么我提出,“从VS2003转换为VS2010后,无法将参数2从'WORD [129]'转换为'LPOLESTR'?

时间:2011-11-05 18:58:27

标签: c++ visual-studio-2010 type-conversion

将旧的vs2003项目转换为vs2010,我偶然发现了一个错误:

cannot convert parameter 2 from 'WORD [129]' to 'LPOLESTR'

任何人都可以向我提供可能导致此问题的提示吗?

1 个答案:

答案 0 :(得分:4)

好吧,你没有发布任何代码,所以我假设你有一个宽字符串定义为,

WORD wszMyAwesomeStringThatsGonnaBePassedToAnAPIatSomePoint[129] = "Booga!";

在VS2005中,请参阅MS gets with the program并使wchar_t成为内置类型。在此之前,它只是... unsigned short的typedef。由于WORD *和LPOLESTR 只是unsigned short*的别名,因此

但是现在,wchar_t是一个内置类型,并且定义了LPOLESTR - 假设你没有使用OLE2ANSI定义编译 - 为__RPC_string wchar_t* ...所以你的代码会中断。

如果你已经愤怒地打字,“你好!我不会在任何地方使用WORD !!!”,停止 - 你很可能正在使用< em>不同的 typedef甚至#define最终会导致您的变量被定义为WORD的数组。也许你正在使用一些庞大的复杂框架,它将XML预编译为包含WORD数组的结构;也许有人为你编写了代码,你甚至都没有看过它。

但是既然你没有发布任何代码向我们展示你如何声明有问题的字符串,我不能说。