查看: 2432|回复: 14

关于osg模块发布的错误(osg80-osgSim.dll)

[复制链接]

该用户从未签到

发表于 2012-11-6 13:33:55 | 显示全部楼层 |阅读模式
各位大虾好,最近在Win7平台上编写了一个软件,有osg模块,在Win7下可预览模型,可是发布到其他电脑上就不一定行了,少量电脑是可以的,很着急!!!!

后来分析了一下,是osg80-osgSim.dll的原因,如果不带此链接库,预览不出模型,可是带了这个,又出错,很是纠结!!!

请问各位前辈有没有遇到这样的情况啊!我是用release下的,还有,osg预览模型怎用到了这个dll,求指导,怎么才能正常使用呢?好无助的问题!!!编了那么久,可是却一直出错!

在我自己的Win7平台可以用,换一台WIn7出现Appcrash错误,换一台XP,也出现了错误,只有一台XP电脑是可以运行的,到底是自己程序的问题还是电脑的问题呢?????

真心求帮助!!!

相关帖子

该用户从未签到

 楼主| 发表于 2012-11-6 13:34:20 | 显示全部楼层
有知道答案的么

该用户从未签到

发表于 2012-11-6 15:43:54 | 显示全部楼层
是否在Lib中添加了osg80-osgSim.lib 不添加lib 是不会用到的

该用户从未签到

 楼主| 发表于 2012-11-6 16:02:06 | 显示全部楼层
liuzhiyu123 发表于 2012-11-6 15:43
是否在Lib中添加了osg80-osgSim.lib 不添加lib 是不会用到的

Link库中是加入了osgSim.lib,但是去掉之后运行程序,如果没有osg80-osgSim.dll文件的话,还是看不到模型,说明osg80-osgSim.dll在模型渲染方面是必须的!

osg80-osgSim.dll类似插件,如果不包含,程序也可以运行,只是渲染不出模型~~~~~

是啥问题呢?捉急啊!

该用户从未签到

 楼主| 发表于 2012-11-6 16:03:51 | 显示全部楼层
liuzhiyu123 发表于 2012-11-6 15:43
是否在Lib中添加了osg80-osgSim.lib 不添加lib 是不会用到的

Link库中是加入了osgSim.lib,但是去掉之后运行程序,如果没有osg80-osgSim.dll文件的话,还是看不到模型,说明osg80-osgSim.dll在模型渲染方面是必须的!

osg80-osgSim.dll类似插件,如果不包含,程序也可以运行,只是渲染不出模型~~~~~

是啥问题呢?捉急啊!

该用户从未签到

发表于 2012-11-6 16:12:58 | 显示全部楼层
本帖最后由 liuzhiyu123 于 2012-11-6 16:16 编辑
八句半对餐 发表于 2012-11-6 16:03
Link库中是加入了osgSim.lib,但是去掉之后运行程序,如果没有osg80-osgSim.dll文件的话,还是看不到模型 ...


没有关系 osgSim 不是必须库 除非您的模型文件实例化用到了 osgSim 相关的类,您给出的信息也很不清楚,出什么错误?或者把您的模型文件拿出来

该用户从未签到

 楼主| 发表于 2012-11-6 17:05:43 | 显示全部楼层
liuzhiyu123 发表于 2012-11-6 16:12
没有关系 osgSim 不是必须库 除非您的模型文件实例化用到了 osgSim 相关的类,您给出的信息也很不清楚, ...

自编了一个小程序验证,只有模型文件和PAT,没有实例化osgSim中的类(至少从source文件中看没有有类被使用),但运行时还是需要osgSim.dll,说明模型的渲染是必须的,就如同osg80-osg.dll一样!

在其他电脑上,如果没有osg80-osgSim.dll,如这样::: WITHOUT.PNG

如果带上osg80-osgSim.dll,就会出现这样的错误::: Win7 error.PNG

在XP平台上也会有类似的问题,提示的是内存can not be "written"。

真是古怪的问题,我程序没有问题,因为在自己编译的平台的是可以运行的~~~~所以应该是程序发布的问题!!!

谢谢您热情的回复!!!

该用户从未签到

发表于 2012-11-7 07:47:51 | 显示全部楼层
八句半对餐 发表于 2012-11-6 17:05
自编了一个小程序验证,只有模型文件和PAT,没有实例化osgSim中的类(至少从source文件中看没有有类被使用 ...

osgSim 不是核心库 完全不是必须  发出代码 和模型看看

该用户从未签到

 楼主| 发表于 2012-11-7 14:06:58 | 显示全部楼层
liuzhiyu123 发表于 2012-11-7 07:47
osgSim 不是核心库 完全不是必须  发出代码 和模型看看

由于我程序中必须要使用到osgSim中的DOF Transform,所以最后肯定是要带上这个dll的。

我用如下简单程序进行了验证,发现osg80-osgSim.dll在读取openflight格式文件时是必须的!
#include <osgViewer/Viewer>
#include <osgDB/ReadFile>
#include <osg/Node>
#include <osgGA/TrackballManipulator>
int main()
{
       osg::Group *root = new osg::Group;
       osgViewer   *vr     = new osgViewer::Viewer;
       osg::Node   *node = osgDB::readNodeFile("models/town.flt");   //  一个地形文件,openflight格式
  
       root->addChild(node);
       vr->setSceneData(root);
       vr->setCameraManipulator(new osgGA::TrackballManipulator());
       vr->realize();
       vr->run();

       return 0;
}

将osg80-osgSim.dll文件从osg中的bin文件夹移除,程序运行时提示缺少osgSim.dll,控制台出现:could not find plugin to read objects from file "modes/town.flt". 如果把osgSim.dll恢复到原文件夹,可看到模型出现,程序没有出错。

从上面的试验中,我认为可以得出下面的结论:
      
        osg80-osgSim,dll 文件至少在读取flt格式的模型文件时是必须的,加之需要用到里面的DOF Transform,所以必须要使用这一个动态链接库。

那么现在的问题是:怎么把编好的程序移植到其他电脑上,也是发布出来。昨天尝试了很长时间都没有成功,今天把上面试验的小程序release了一下,在其他电脑上运行,如果不带有osg80-osgSim.dll,程序预览不出模型,如果带有这个dll,程序直接出错!!!!其错误如下:“0X7c939fca”指令引用的“0X00000010”内存,该内存不能为“written”。

从这一个我推断出::osg80-osgSim.dll可能和电脑中的某个文件冲突,导致出错,也是说很难发布osg程序的release版本!!!当然“Debug”版本我还没有尝试。

请问版主有遇到过类似的情况吗?将程序发布到其他电脑上用时,如果文件中有osg80-osgSim.dll,程序是否也出错,







该用户从未签到

发表于 2012-11-7 15:10:19 | 显示全部楼层
本帖最后由 liuzhiyu123 于 2012-11-7 15:11 编辑
八句半对餐 发表于 2012-11-7 14:06
由于我程序中必须要使用到osgSim中的DOF Transform,所以最后肯定是要带上这个dll的。

我用如下简单程 ...


没有关系 osgSim 不是必须库 除非您的模型文件实例化用到了 osgSim 相关的类,您给出的信息也很不清楚,出什么错误?或者把您的模型文件拿出来

我的回答您完全不看,用到了osgSim库中相关的类必须要带相关的dll 这个还用验证么。。。

该用户从未签到

 楼主| 发表于 2012-11-7 15:34:14 | 显示全部楼层
liuzhiyu123 发表于 2012-11-7 15:10
没有关系 osgSim 不是必须库 除非您的模型文件实例化用到了 osgSim 相关的类,您给出的信息也很不清楚, ...

我明白,验证程序中没有实例化osgSim中的类,相必是打开openflight格式的模型文件必须是需要osgSim的,因为openflight中可以定义DOF。

我想知道的是带有osg80-osgSim.dll的程序是怎么发布release版本的?

该用户从未签到

发表于 2012-11-8 07:53:59 | 显示全部楼层
八句半对餐 发表于 2012-11-7 15:34
我明白,验证程序中没有实例化osgSim中的类,相必是打开openflight格式的模型文件必须是需要osgSim的,因 ...

release 编译 没什么特别的地方

该用户从未签到

发表于 2012-11-9 14:27:10 | 显示全部楼层
osgSim没有特别的地方,不过您肯定要使用和其他osg库一致的版本就是了

该用户从未签到

 楼主| 发表于 2012-11-16 20:26:14 | 显示全部楼层
array 发表于 2012-11-9 14:27
osgSim没有特别的地方,不过您肯定要使用和其他osg库一致的版本就是了

后来发现是msvcp100的版本问题,试了很长的时间~~~请问osg怎么才能实现有云朵的天空呢?就和VegaPrime中自带的天空一样的!就只能使用天空盒吗?

该用户从未签到

发表于 2012-11-19 10:36:16 | 显示全部楼层
配合SilverLining可以很轻松地实现高品质的天空,效果参看我在作品区发的最新帖子,实现可以参考osgrecipes中的例子
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表