1. 环境: VS2008 , 版本: wxWidgets-2.8.12.tar.gz
wxthings_2006_04_28.tar.gz
wxplotctrl_2006_04_28.tar.gz
2. 由于版本比较老,所以出现了几个比较奇怪的问题。
问题1: 开着360解压wxWin , 硬是被360吃了一些 art\ 目录下的 .xpm 文件,最终导致 wxWin 的 core 库编译找不到xpm文件
----------------------我的解决办法--------------: 把360关了,解压好编译好之后再说。
问题2: wxThings 里面 第700 行的方法:bool wxGenericBrush::IsSameAs(const wxGenericBrush& brush) const
原来代码为:
bool wxGenericBrush::IsSameAs(const wxGenericBrush& brush) const
{
wxCHECK_MSG(Ok() && brush.Ok(), 1, wxT("Invalid generic brush"));
wxGenericBrushRefData *bData = (wxGenericBrushRefData*)brush.GetRefData();
return (M_GBRUSHDATA->m_colour == bData->m_colour) &&
(M_GBRUSHDATA->m_style == bData->m_style) &&
(M_GBRUSHDATA->m_stipple == bData->m_stipple);
}
修改为, 检查版本。 其实这个原因我也不太知道为什么,是俺师傅告诉我的。
bool wxGenericBrush::IsSameAs(const wxGenericBrush& brush) const
{
wxCHECK_MSG(Ok() && brush.Ok(), 1, wxT("Invalid generic brush"));
wxGenericBrushRefData *bData = (wxGenericBrushRefData*)brush.GetRefData();
return (M_GBRUSHDATA->m_colour == bData->m_colour) &&
(M_GBRUSHDATA->m_style == bData->m_style) &&
#if wxCHECK_VERSION(2,7,2)
(M_GBRUSHDATA->m_stipple.IsSameAs(bData->m_stipple));
#else
(M_GBRUSHDATA->m_stipple == bData->m_stipple);
#endif // wxCHECK_VERSION(2,7,2)
}
问题3 : wxPlotCtrl 库里面出现了 wxArrayDouble 的重定义,这个是因为wxPlotCtrl 版本比较老,和后续的新版本的wxWin 里面添加了wxArrayDouble起了冲突
-------------------解决办法--------------------- : 把 wxPlotCtrl 种的 wxArrayDouble 声明给屏蔽掉。
问题4: 后续出现了一个 编译错误 error C2308, 串联不匹配的字符串。
比如: wxMessageBox(wxT(" aaaaaaaaaaaaaaa"
"bbbbbbbbbbbbbbb "
"ccccccccccccccccc" );
后来我换成一个字符串,用分行符来隔开了,编译通过。
目前3个库编译都通过了, 等待晚上写个简单的测试程序试试,如果有不对的地方,或者大神们知道详细情况的,还希望告知,我也是带懂不懂的。