osg 刚开始学的一些问题。

摘要:
$allocator@D@2@@std@@@Z)一般出现这种情况的原因是,没有添加相关的库文件,我检查了一下,此程序的能调动的相关库已经添加完毕,如下:osgViewerd.libosgDBd.libosgd.libOpenThreadsd.libosgGAd.lib,可以说是只多不少。inlineosg::Node*readNodeFile{returnreadNodeFile;}通过以上得到:可能是nodenew的问题?

这两天开始学习osg,按照一些教程,安装和配置成功之后,准备编个例子试试,出现了一些问题,仅此记录而已,以待以后再具体分析。

安装和配置教程 请按此按钮

1、

1 #include <osgViewer/Viewer>2 3 #include <osgDB/ReadFile>4 5 intmain( int, char**)
6 7 {
8 9 osgViewer::Viewer viewer;
10 11 viewer.setSceneData( osgDB::readNodeFile( "cow.osg") );
12 13 returnviewer.run();
14 15 }
运行成功,没问题。出现一个小牛。
2、
1 #include <osgViewer/Viewer>2 #include <osgDB/ReadFile>3 intmain()
4 {
5 osgViewer::Viewer viewer;
6 osg::Node *node =newosg::Node;
7 node =osgDB::readNodeFile("fountain.osg");
8 viewer.setSceneData(node);
9 returnviewer.run();
10 11 12 }

error LNK2001: 无法解析的外部符号 "public: virtual void __thiscall osg::Object::setName(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (?setName@Object@osg@@UAEXABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z)

一般出现这种情况的原因是,没有添加相关的库文件,我检查了一下,此程序的能调动的相关库已经添加完毕,如下:

osgViewerd.lib
osgDBd.lib
osgd.lib
OpenThreadsd.lib
osgGAd.lib,可以说是只多不少。再看(初学者),

下面的程序,是通过添加一个节点,然后添加到场景中去的,是不是node的方法不对?
osg::Node
*node =newosg::Node;
node =osgDB::readNodeFile("fountain.osg");
查相关资料是对的,相关api有

readNodeFile的定义 可以直接添加readNodeFile。 inline osg::Node* readNodeFile(const std::string& filename)
{
return readNodeFile(filename,Registry::instance()->getOptions());
}
通过以上得到:
可能是node new的问题?
osg::Node *node =newosg::Node;
改之,直接用智能指针。
1 #include <osgViewer/Viewer>2 #include <osgDB/ReadFile>3 intmain()
4 {
5 osgViewer::Viewer viewer;
6 osg::ref_ptr<osg::Node>node =newosg::Node;
7 node =osgDB::readNodeFile("fountain.osg");
8 viewer.setSceneData(node);
9 returnviewer.run();
10 11 12 }

还是出现以上错误。555!

难道不能new?

#include <osgViewer/Viewer>
#include
<osgDB/ReadFile>intmain()
{
osgViewer::Viewer viewer;
osg::ref_ptr
<osg::Node>node =osgDB::readNodeFile("fountain.osg");
node
=osgDB::readNodeFile("fountain.osg");
viewer.setSceneData(node);
returnviewer.run();
}

编译成功,正常运行。不明白为什么?

把智能指针换回去。如下:

1 #include <osgViewer/Viewer>2 #include <osgDB/ReadFile>3 intmain()
4 {
5 osgViewer::Viewer viewer;
6 osg::Node *node =osgDB::readNodeFile("fountain.osg");
7 viewer.setSceneData(node);
8 returnviewer.run();
9 10 11 }

编译通过,生成新实例。这到底是为什么?为什么?难道指针不能new 了?不能分配内存了?还是我的工程配置问题?

然后让同学试我的例子,正常运行。苍天啊,大地啊?why?

看到博文的童鞋,能解决我这个问题的,请给我站内信,万分感谢。

ps:osg2.8+VS2008+xp系统

免责声明:文章转载自《osg 刚开始学的一些问题。》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇驱动开发之libusb函数if if 与 if elif 本质区别下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

java 实现基于opencv全景图合成

因项目需要,自己做了demo,从中学习很多,所以分享出来,希望有这方面需求的少走一些弯路,opencv怎么安装网上教程多多,这里不加详细说明,我安装的opencv-3.3.0  如上图所示,找到相应的jar包,这里讲一下如何这个jar如何导入Maven仓库 mvn install:install-file -Dfile=D:opencv-3.0.0ope...

在阿里云创建子域名,配置nginx,使用pm2部署node项目到ubuntu服务器

配置域名 在阿里云找到主域名   进入主域名之后,右上角添加解析,添加子域名, 记录类型选择cname,主机记录填写子域名的名称,记录值为主域名,至此阿里云已经配置好了。 检查nginx安装 首先检查服务器是否安装nginx:   find / -name 'nginx.conf'  -ls   或者   ps -ef|grep nginx   安装ng...

K8S从入门到放弃系列-(8)kube-apiserver 高可用配置

摘要:   前面几篇文章,就是整个的master节点各组件的部署,上面我们提到过,k8s组件中,kube-controller-manager、kube-scheduler及etcd这三个服务高可用,都是通过leader选举模式产生,本章节我们着重介绍下kube-apiserver高可用配置 1、以下操作属于node节点上组件的部署,在master节点上...

osg模型操作之位置变换节点(直接设置想要的效果)

位置变化节点:osg::PositionAttitudeTransform   由osg::PositionAttitudeTransform : osg::Transform : osg::Group : osg::Node : osg::Object : osg::Referenced 的继承关系。 常用主要成员函数:   void  setPosit...

C语言两个libxml2库使用的问题

最近使用libxml2想做点东西,翻看一些example后还是有些疑问,去segmentfault问了下,感谢@pingjiang的热心解答,问题解决,记录如下 (一)如下是一个XML文件,p为根结点 <p> <one>1</one> <two>2</two> <th...

ubuntu13.04下gcc4.5.1的安装

(1)去gcc官网下载源码包http://ftp.gnu.org/gnu/gcc/gcc-4.5.1/gcc-4.5.1.tar.bz2 (2)编译安装gcc之前需要先安装三个库,如果下面命令行不通,对应的都可以到官网下载: $wgetftp://ftp.dti.ad.jp/pub/lang/gcc/infrastructure/gmp-4.3.2.tar...