我要发帖 回复

正式会员

1

主题

58

积分

0

专家分

:

私信
发表时间 : 2007-11-6 13:48:57 | 浏览 : 2587    评论 : 2
大家在调试administrator最简单的一个OSG例子时,还会在编译的时候遇到一些问题,下面对此进行一些说明。
为更好地说明一些问题,把原帖子重新附上。最简单的OSG程序
1、建立和设置工程
   启动Microsoft Visual Studio .2005,建立一个Win32控制台项目,在应用程序设置选项卡里,选择空项目,点击完成。为了在工程选项里出现C/C++的选项,先给工程添加一个空的C++源文件。
OSG运行需要多线程DLL的运行时库和RTTI,所以,在建立每个OSG工程后,第一件事就是更改工程设置。
打开项目属性,在C/C++选项卡里,点击代码生成页,更改运行时库,对于Debug版,用多线程调试 DLL (/Mdd),对于Release版,用多线程 DLL (/MD)。
   设置C/C++选项卡里的语言页的启用运行时类型信息为:是(/GR)。
   OSG程序需要链接对应的库文件,打开链接器选项卡里的输入页,设置附加依赖项,对于Debug版,是OpenThreadsWin32d.lib Producerd.lib osgd.lib osgDBd.lib osgFXd.lib osgGAd.lib osgParticled.lib osgProducerd.lib osgSimd.lib osgTerraind.lib osgTextd.lib osgUtild.lib,对于Release版,设置这些lib文件不带“d”的版本。
这样,工程属性就设置好了。
2、例子程序如下:
   在刚才建立的空文件里输入如下内容:
#include <osgDB/ReadFile>
#include <osgProducer/Viewer>
int
main(int, char**)
{
osgProducer::Viewer viewer;
viewer.setUpViewer();
osg::Node* node = osgDB::readNodeFile("cessna.osg");
viewer.setSceneData(node);
viewer.realize();
while (!viewer.done())
{
viewer.sync();
viewer.update();
viewer.frame();
}
viewer.sync();
return 0;
}
********************************************************************************
     如果直接进行编译,恐怕很难通过,有些人已经发帖子说道这个问题,其实主要还是在IDE开发环境下的设置问题,这一点Array和FlySky已经说明过,针对这个问题,我们做一些补遗。
     在Visual Studio 2005 中文版开发环境下,具体除了第一步的设置外,还需要如下设置:
(1) 在项目属性页C/C++的常规中,附加包含目录中要把OSG安装后的include文件夹路径添加上去,如 "C:\Program Files\OSG1.2_vc80\include",否则编译中会出现找不到osgDB/ReadFile文件的错误;预编辑头页中的创建/使用预编译头应选择“不使用预编译头”
(2) 在链接器页中,常规中的附加库目录一定要添加OSG安装后的lib文件夹路径,如"C:\Program Files\OSG1.2_vc80\lib"否则在编译中会找不到*.lib文件。在输入页中的附加依赖项中填入1中的*.lib文件。这两项实际上是应该对应的,缺一不可。
(3) 打开命令行页,能看到类似如下的信息
/OUT:"E:\osg_projections\osg_test1\Debug\osg_test1.exe" /INCREMENTAL /NOLOGO /LIBPATH:"C:\Program Files\OSG1.2_vc80\lib" /MANIFEST /MANIFESTFILE:"Debug\osg_test1.exe.intermediate.manifest" /DEBUG /PDB:"e:\osg_projections\osg_test1\debug\osg_test1.pdb" /SUBSYSTEM:CONSOLE /MACHINE:X86 /ERRORREPORT:PROMPT OpenThreadsWin32d.lib Producerd.lib osgd.lib osgDBd.lib osgFXd.lib osgGAd.lib osgParticled.lib osgProducerd.lib osgSimd.lib osgTerraind.lib osgTextd.lib osgUtild.lib  kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib
      这样编译一下,应该没有问题。
这是个小问题,实际上还是对Visual Studio 的开发环境还是忽视造成的。特别是从6.0到8.0的过渡中,容易出现。还需要说明的是8.0的中文版和英文版也会出现不一样的问题,会相应在其它的帖子里面说明。

评分

参与人数 2积分 +40 收起 理由
FreeSouth + 20
obuil + 20

查看全部评分

最近VR访客

obuil 评论于2007-11-6 17:15:23
看你分少 加点分,以示支持
muyekey 评论于2007-11-20 22:06:06
好东西,顶

手机版|VR开发网 统计 津ICP备18009691号
网安备12019202000257

GMT+8, 2021-9-18 01:09 AM

返回顶部