|
楼主 |
发表于 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,程序是否也出错,
|
|