项目仅在特定版本的Visual Studio中编译

时间:2014-02-02 11:26:32

标签: c++ visual-studio-2010 visual-studio-2008 visual-studio-2012 mfc

我有一个使用MFC和标准C ++的项目。我不知道它最初制作的VS.在仅安装了VS2012且在仅安装了VS2010的机器上打开时 - 它没有构建,显示错误,主要是关于类型不匹配。例如:

CListBox &ltbx
CString s;
ltbx.AddString(s);

这显示错误,说AddString不接受类型CString的参数。

也是如此
CListBox &ltbx
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工作室的机器上运行?

1 个答案:

答案 0 :(得分:1)

AddString需要LPCTSTR const char*const wchar_t*,具体取决于是否定义了_UNICODE

差异可能是你的VS2012项目中定义了_UNICODE。