编译VirtualPlanetBuilder的问题及其解决方法
开始在64位Win7系统上编译生成不成功,换成32位的,还是VS2010,并且也不用什么特定的对应版本,我用的是VPB-0.9.11和OSG-3.0.1。并且很多人说的那个libsquish的依赖也是没必要的。
在编译生成过程中,可能会出现下面的错误:
osgDB.lib(osg80-osgDB.dll) : error LNK2005: "public: void __thiscall std::basic_ofstream<char,struct std::char_traits<char> >::`vbase destructor'(void)" (??_D?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAEXXZ) 已经在 SpatialProperties.obj 中定义
正在创建库 G:/VPB/VPB 0.9.11/lib/Release/vpb.lib 和对象 G:/VPB/VPB 0.9.11/lib/Release/vpb.exp
G:\VPB\VPB 0.9.11\lib\Release\vpb.dll : fatal error LNK1169: 找到一个或多个多重定义的符号
生成失败。
正在创建库 G:/VPB/VPB 0.9.11/lib/Release/vpb.lib 和对象 G:/VPB/VPB 0.9.11/lib/Release/vpb.exp
G:\VPB\VPB 0.9.11\lib\Release\vpb.dll : fatal error LNK1169: 找到一个或多个多重定义的符号
生成失败。
这个据说是在VS2010中才会出现的问题,在vs2008中不会(没有验证)。
解决办法是强制输出dll文件:
在vpb的 ”项目属性->链接器->命令行“ 中添加 ”/FORCE:MULTIPLE" ,(记住dubug和release都要添加,如果你同时生成两种版本的话)
创新,自由,理想