项目要求使用wxwidgets,早就听过N遍大名了,一直没用过,正好可以试试,首先不用多说了下载我下载了2.91 msi版本。由于是win7系统,又使用了用户控制,没敢装到C盘直接装了D:\wxWidgets-2.9.1。以下就是比较坎坷的安装过程了:
1)启动VS2008 打开D:\wxWidgets-2.9.1\build\msw\wx_vc9.sln 编译wxwidgets
问题一出现:直接出现了40多个致命错误,显示无法打开程序数据库;
查找MSDN问题说明,指出我的用户区域设置同系统区域设置不同,仔细查看了以下相同,应该不是这个原因,估计是Win7兼容性捣鬼。开始调整VS2008的兼容性设计,多次反复后编译将Vs2008的兼容性设置windows vista 可以进行编译。
2)继续编译,首先编译的是universal Release 一路绿灯 OK通过生成文件
3)调整配置编译universal Debug 提示出错
问题二:
1)D:\wxWidgets-2.9.1\lib\vc_lib\mswunivud\wx\msw\rcdefs.h属性为只读无法删除;
2)多个文件无法打开wx/setup.h文件;
首先确定以下配置,发现工具->选项->项目和解决方案->VC++目录 的包含目录没有指定添加如下内容
D:\wxWidgets-2.9.1\include
D:\wxWidgets-2.9.1\includemsvc\wx
关闭VS2008重新启动,编译正常通过
4)这时想起Release版的运行库应该设定为/MT 而不应该是/MD 否则生成内容还是要依赖VS2008,于是修改每个VCproj配置属性->C/C++/代码生成->运行库 修改为多线程/MT
5) 重新编译 universal Release 问题二重新出现,以前已经编译成功的内容为什么有出现了问题? 这次问题集中出现在aui项目中,于是将aui的配置属性改回/MD单独编译成功,在改回/MT编译成功,为什么会这样???
6)编译成功后可以实验以下sample中的例子 opengl、grid、ribbon都非常正常,auidemo这个例子release版正常 debug版提示一个预编译头有问题,不太理解
几点注意:
- 由于编译的LIB都是Unicode版本因此在设计程序时应该将配置文件设定为 universal Release(debug)
- 最好将wxwidgets安装目录下的source目录加入到系统选项中vc ++目录中的源文件目录列表中
- 在编译成relase版本时不用忘记将运行库修改为多线程(/MT)选项。