查看: 2920|回复: 17

OSG 海洋模块:release 版的问题。

[复制链接]

该用户从未签到

发表于 2011-2-21 14:14:11 | 显示全部楼层 |阅读模式
刚开始尝试学习OSG海洋模块。debug和release版的编译没有问题, debug的执行也没有问题,但是release版的执行出现问题:"Entry Point Not Found", "The procedure entry point ?setMatrix@Matrix Transform@osg@@Z could not be located in the dynamic link library osg55-osg.dll" 这样的对话框提示。 不知道是什么原因? 高手帮忙分析下,非常感谢!

该用户从未签到

发表于 2011-2-21 15:25:06 | 显示全部楼层
您说的海洋模块是什么?osgOcean?您的错误是否是因为编译所用的LIB与运行所用的DLL版本不符引起的

该用户从未签到

 楼主| 发表于 2011-2-21 15:42:32 | 显示全部楼层
是 osgOcean 。  会不会是libfftw3f-3.lib 这个的使用问题? 唯独这个lib ,两个版本是共同使用的。

该用户从未签到

发表于 2011-2-22 09:21:13 | 显示全部楼层
应该不会,看起来很明显是您的osg.dll存在问题,可能是您编译osgocean程序所用的版本与运行时的版本不符?

该用户从未签到

 楼主| 发表于 2011-2-22 15:37:30 | 显示全部楼层
版本不符?我用的是 osg2.8.2和osgOcean1.01。 osgOcean1.01的编译方法按照google上的说明来进行编译install.  
我重新编译了osg2.8.2和osgOcean1.01 结果还是不行。CMake的配置应该是不会有问题的。怎么会出现Debug可以,Release不可以的现象呢?
另外,Debug版的OsgOcean我没有看见天空,不知道如何把天空加进来。

该用户从未签到

发表于 2011-2-22 16:14:52 | 显示全部楼层
Entry Point Not Found错误的通常原因都是因为“隐式调用的dll与编译用的lib的版本不对”——例如,您的程序依赖于某个库abc.lib,它对应了abc.dll;而您运行程序时所用的abc.dll并不是abc.lib生成的——这与osg没什么关系,也不是Debug/Release的问题

没有天空可能是因为您没有把资源数据拷贝到正确的位置上

该用户从未签到

 楼主| 发表于 2011-2-23 13:17:16 | 显示全部楼层
明白您的意思。可是,我并没有特别的引用什么dll ,所有的都是用cmke配置完成编译。有些晕了。 还在痛苦的寻找原因中。

该用户从未签到

 楼主| 发表于 2011-2-23 13:30:26 | 显示全部楼层
另外,关于天空纹理的三个文件夹数据放在这个下面:C:\Program Files\osgOcean\bin\resources\textures。参照的是 Google 上的说明。即在编译完后的安装目录下。但是天空还是看不见。


如果我要在OsgEarth上,即球形的地面上,铺上“海”,这个需要对osgOcean作什么样的修改?

该用户从未签到

发表于 2011-2-23 17:17:32 | 显示全部楼层
如果我要在OsgEarth上,即球形的地面上,铺上“海”,这个需要对osgOcean作什么样的修改
我认为在目前这是一项不太可能的任务

该用户从未签到

 楼主| 发表于 2011-2-23 17:35:51 | 显示全部楼层
奥。 如果不可以那我就不再花时间了。
天空的纹理该放在哪个路径下呢?再次问下。

该用户从未签到

发表于 2011-2-23 23:05:38 | 显示全部楼层
都放在osgOcean\bin\resources就可以了,我就是这么做的

该用户从未签到

 楼主| 发表于 2011-2-24 11:37:38 | 显示全部楼层
好象是是这样子:我发现在安装目录下的 exe 启动以后,是可以导入所有的纹理。而如果执行例子工程中的exe,需要重新改写osgDB::FilePathList.  我改写了Example的path,再运行Example的例子就可以看见天空了,不过貌似海浪的泡沫还看不见,继续研究是怎么回事。

该用户从未签到

发表于 2011-2-24 14:38:33 | 显示全部楼层
需要重新改写osgDB::FilePathList
这是多余的步骤,并且这说明您依然没有把所有需要的文件放置在正确的位置

该用户从未签到

 楼主| 发表于 2011-2-24 16:03:37 | 显示全部楼层
我安装目录是:C:\Program Files\osgOcean\bin, Resource所有的资源文件都放在了这个路径下面。在这个路径下面运行oceanExample.exe没有问题。但是如果我把这个exe 放置到别的路径下运行,我就会看不到天空等对应的纹理。
这样的现象有问题么?

该用户从未签到

发表于 2011-2-24 16:53:17 | 显示全部楼层
把这个exe放在别的路径下运行的话,您也应当把整个resource目录拷贝到这个目录下,或者设置OSG_FILE_PATH

该用户从未签到

 楼主| 发表于 2011-2-25 13:38:13 | 显示全部楼层
奥,这样。对这样的路径设置原理还是有些不明白。

该用户从未签到

发表于 2011-2-25 17:30:56 | 显示全部楼层
回复 5# hjsxixi


    你用的osg2.8.2是源代码包,还是安装包?

该用户从未签到

 楼主| 发表于 2011-2-26 11:10:41 | 显示全部楼层
回复楼上的,我用的是源代码包。Any Problems?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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