查看: 5756|回复: 23

求助,vs2010编译后出现的问题!

[复制链接]

该用户从未签到

发表于 2011-4-3 01:29:58 | 显示全部楼层 |阅读模式
我按照书上的教程一步步进行编译,并且配置好路径,在cmd的窗口下运行osgViewer cow.osg没有问题,但是编写“helloworld”的过程中,编译没有问题,但是点击执行的时候出现执行错误,具体如下图:请问是什么情况?编译环境是win7+vs2010,osg-2.9.11
捕获.PNG

该用户从未签到

 楼主| 发表于 2011-4-4 09:56:12 | 显示全部楼层
再次编译还是出现这个问题

该用户从未签到

 楼主| 发表于 2011-4-4 11:06:16 | 显示全部楼层
已经解决,因为zlib1d.dll的问题

该用户从未签到

发表于 2011-4-6 09:14:14 | 显示全部楼层
谢谢分享

该用户从未签到

发表于 2011-4-11 13:54:56 | 显示全部楼层
本帖最后由 wanghuisoftware 于 2011-4-11 13:58 编辑

回复 1# hy1226


    你好,请问您编译的OSG2.9.11目录下bin\osgPlugins-2.9.11的文件全吗?相比与2.8的缺了很多.dll文件的。是不是?导致有些功能不能用的。

该用户从未签到

发表于 2011-4-12 11:51:42 | 显示全部楼层
应该不是吧,dll都跟lib对应的啊,请查看是否完整编译

该用户从未签到

 楼主| 发表于 2011-4-16 12:13:35 | 显示全部楼层
回复 5# wanghuisoftware


    我没有用过2.8的编译包,现在还暂时没有发现有缺失

该用户从未签到

发表于 2011-4-18 15:32:47 | 显示全部楼层
回复 7# hy1226


   源码中就缺少对jpg以及png图片的处理,不行你在cmd下运行“osgviewerd --image clockface.jpg”

该用户从未签到

发表于 2011-4-18 15:33:18 | 显示全部楼层
回复 6# tianxiao888

源码中就缺少对jpg以及png图片的处理,不行你在cmd下运行“osgviewerd --image clockface.jpg”

该用户从未签到

发表于 2011-4-20 09:25:50 | 显示全部楼层
哦,明白了,是我的第三方插件没下载。

该用户从未签到

发表于 2011-4-20 09:28:29 | 显示全部楼层
回复 3# hy1226


    你好,我也遇到上述问题了,zlib1d.dll不是位于第三方插件包里吗?在环境变量里加路径了,有什么解决方案呢?

该用户从未签到

发表于 2011-4-20 10:30:27 | 显示全部楼层
你这个文件存在么?
不存在就要重新下个,或者自己编译第三方库

该用户从未签到

 楼主| 发表于 2011-4-22 08:43:58 | 显示全部楼层
回复 11# wanghuisoftware


    你应该查找对应操作系统和编程语言的第三方库。

该用户从未签到

 楼主| 发表于 2011-4-22 08:48:32 | 显示全部楼层
我以前的zlib1d.dll文件是从别的同学那里考得,他的环境是xp+vs2005,我的环境是win7+vs2010,在编译的时候没有问题,但是运行的时候会出现上面的问题,我删除了zlib1d.dll,将程序中原有的zlib1.dll改名为zlib1d.dll后问题解决。

该用户从未签到

发表于 2011-4-22 09:28:35 | 显示全部楼层
回复 14# hy1226


    恩,我也是这么弄的,直接把system32中的zlib1.dll又复制了一份,osgviewerd cow.osg可以运行,但是osgviewerd --image Images/clockface.jpg又提示找不到plugin,我已下载3rdPlugin并且在cmake的时候添加了路径,是不是这个3rd插件不能直接拿过来用呀。还要自己编译一下的。

该用户从未签到

 楼主| 发表于 2011-4-22 12:23:56 | 显示全部楼层
回复 15# wanghuisoftware


    你试试osgviewer --image Images/clockface.jpg命令。

该用户从未签到

发表于 2011-4-22 12:51:27 | 显示全部楼层
回复 16# hy1226


    是可以的。我把notify设置为debug模式,弹出的调试信息为加载osgdb_jpeg.dll。成功的

该用户从未签到

发表于 2011-4-22 18:26:32 | 显示全部楼层
一般应该把第三方库的bin的路径加到环境变量

该用户从未签到

 楼主| 发表于 2011-4-23 00:10:56 | 显示全部楼层
一般应该把第三方库的bin的路径加到环境变量
tianxiao888 发表于 2011-4-22 18:26



    此为正解

该用户从未签到

发表于 2011-9-4 02:11:12 | 显示全部楼层
楼主,我也碰到和你一样的问题,按照你的说法,把我下载的第三方库中的zlib1.dll改成zlib1d.dll然后放在C:\WINDOWS\system32就行了。

但是我还有一些不明白,在CMake中时有一项是ACTUAL_3DPARTY_DIR,这个是指定第三方依赖的路径,所以在生成的VS启动文件中,进行编译的时候,应该就自动的将第三方库编译进去了,应该有个默认的位置,所以我们就不需要把第三方的bin的路径加到环境变量中吧!
你这样把第三方的bin的路径加到环境变量中,可能是因为你把没有问题的zlib1d.dll放在第三方的bin文件夹中,就好像我是放在C:\WINDOWS\system32下面。
但是我在编译生成的文件中没有找到zlib1d.dll(难道是被合并了?),所以就疑惑了。

不知道我的这些想法是否正确,还请楼主和各位大侠指教一下下!

该用户从未签到

发表于 2012-3-7 00:40:47 | 显示全部楼层
楼主的方法可以,谢谢楼主。

该用户从未签到

发表于 2012-4-27 11:47:46 | 显示全部楼层
第三方库解压后只在X64下有zlib1.dll,但是我只用x86的,为什么x86里边没有呢?
是不是在编译的时候就应该在第三方库的文件夹内存在zlib?
或是等编译完成后直接下载,然后放在system32下

该用户从未签到

发表于 2013-8-8 17:09:17 | 显示全部楼层
本帖最后由 xiacanni 于 2013-8-8 17:10 编辑
zlaww 发表于 2011-9-4 02:11
楼主,我也碰到和你一样的问题,按照你的说法,把我下载的第三方库中的zlib1.dll改成zlib1d.dll然后放在C:\ ...


我也碰到了这个问题。
后来我看到下面这个帖子明白了一些。
http://forum.openscenegraph.org/viewtopic.php?t=8052

我比较菜,说说自己的理解。
dll是二进制文件,不用再编译了。(可能也不能再编译了)
所以,zlib1d.dll一般不会被合并到osg的dll里面,依然是单独存在的。
所以,osg要想调用zlib1d.dll,还是要能找到它才可以。
(大家都知道的,程序找dll顺序:应用程序所在目录→当前目录→Windows SYSTEM目录→Windows目录→PATH环境变量指定的路径。所以把dll放在以上的任一个目录里就行了。)

如果osg在生成的时候自动把3rdParty\bin里的文件,拷贝到自己的bin里面,就不把给3rdParty加如path了,但是osg没这么做,所以最好的做法还是把3rdParty的bin加入path。

如果编译的时候用的是lib而不是dll的话,就会把lib的内容合并到新生成的代码里,因而lib就不存在dll的这个问题。

该用户从未签到

发表于 2013-8-8 17:13:17 | 显示全部楼层
jlsdlj 发表于 2012-4-27 11:47
第三方库解压后只在X64下有zlib1.dll,但是我只用x86的,为什么x86里边没有呢?
是不是在编译的时候就应该在 ...

没有zlib1.dll的话也许有zlib1.lib吧。
编译完了最好按前面说的,把第三方库的bin的路径加到环境变量。
这样不会有问题。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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