我有一个使用MFC和标准C ++的项目。我不知道它最初制作的VS.在仅安装了VS2012且在仅安装了VS2010的机器上打开时 - 它没有构建,显示错误,主要是关于类型不匹配。例如:
CListBox <bx
CString s;
ltbx.AddString(s);
这显示错误,说AddString不接受类型CString的参数。
也是如此CListBox <bx
std::string str;
ltbx.AddString(str.c_str());
此代码也显示错误:
string str;
CString CInputID;
str = static_cast<string> (CInputID);
它表示没有用户定义的从CString到std :: string的转换。
毫无疑问,我应该使用不同类型的字符串和所有,但在已安装VS2010和VS2008的机器上打开的完全相同的项目工作正常,所有类型都匹配。所以我的问题是这是如何工作的?我在想,也许VS2008有一些库定义了所有必要的转换,VS2010正在使用它们。如果是这样,那些库是什么?如何让这个项目在没有安装2008工作室的机器上运行?
答案 0 :(得分:1)
AddString需要LPCTSTR
const char*
或const wchar_t*
,具体取决于是否定义了_UNICODE
。
差异可能是你的VS2012项目中定义了_UNICODE。