hy1226 发表于 2011-4-3 01:29:58

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

我按照书上的教程一步步进行编译,并且配置好路径,在cmd的窗口下运行osgViewer cow.osg没有问题,但是编写“helloworld”的过程中,编译没有问题,但是点击执行的时候出现执行错误,具体如下图:请问是什么情况?编译环境是win7+vs2010,osg-2.9.11

hy1226 发表于 2011-4-4 09:56:12

再次编译还是出现这个问题

hy1226 发表于 2011-4-4 11:06:16

已经解决,因为zlib1d.dll的问题

tianxiao888 发表于 2011-4-6 09:14:14

谢谢分享

wanghuisoftware 发表于 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文件的。是不是?导致有些功能不能用的。

tianxiao888 发表于 2011-4-12 11:51:42

应该不是吧,dll都跟lib对应的啊,请查看是否完整编译

hy1226 发表于 2011-4-16 12:13:35

回复 5# wanghuisoftware


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

wanghuisoftware 发表于 2011-4-18 15:32:47

回复 7# hy1226


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

wanghuisoftware 发表于 2011-4-18 15:33:18

回复 6# tianxiao888

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

wanghuisoftware 发表于 2011-4-20 09:25:50

哦,明白了,是我的第三方插件没下载。

wanghuisoftware 发表于 2011-4-20 09:28:29

回复 3# hy1226


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

tianxiao888 发表于 2011-4-20 10:30:27

你这个文件存在么?
不存在就要重新下个,或者自己编译第三方库

hy1226 发表于 2011-4-22 08:43:58

回复 11# wanghuisoftware


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

hy1226 发表于 2011-4-22 08:48:32

我以前的zlib1d.dll文件是从别的同学那里考得,他的环境是xp+vs2005,我的环境是win7+vs2010,在编译的时候没有问题,但是运行的时候会出现上面的问题,我删除了zlib1d.dll,将程序中原有的zlib1.dll改名为zlib1d.dll后问题解决。

wanghuisoftware 发表于 2011-4-22 09:28:35

回复 14# hy1226


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

hy1226 发表于 2011-4-22 12:23:56

回复 15# wanghuisoftware


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

wanghuisoftware 发表于 2011-4-22 12:51:27

回复 16# hy1226


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

tianxiao888 发表于 2011-4-22 18:26:32

一般应该把第三方库的bin的路径加到环境变量

hy1226 发表于 2011-4-23 00:10:56

一般应该把第三方库的bin的路径加到环境变量
tianxiao888 发表于 2011-4-22 18:26 http://bbs.osgchina.org/images/common/back.gif


    此为正解

zlaww 发表于 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(难道是被合并了?),所以就疑惑了。

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

giszzz 发表于 2012-3-7 00:40:47

楼主的方法可以,谢谢楼主。

jlsdlj 发表于 2012-4-27 11:47:46

第三方库解压后只在X64下有zlib1.dll,但是我只用x86的,为什么x86里边没有呢?
是不是在编译的时候就应该在第三方库的文件夹内存在zlib?
或是等编译完成后直接下载,然后放在system32下

xiacanni 发表于 2013-8-8 17:09:17

本帖最后由 xiacanni 于 2013-8-8 17:10 编辑

zlaww 发表于 2011-9-4 02:11 static/image/common/back.gif
楼主,我也碰到和你一样的问题,按照你的说法,把我下载的第三方库中的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的这个问题。

xiacanni 发表于 2013-8-8 17:13:17

jlsdlj 发表于 2012-4-27 11:47 static/image/common/back.gif
第三方库解压后只在X64下有zlib1.dll,但是我只用x86的,为什么x86里边没有呢?
是不是在编译的时候就应该在 ...

没有zlib1.dll的话也许有zlib1.lib吧。
编译完了最好按前面说的,把第三方库的bin的路径加到环境变量。
这样不会有问题。
页: [1]
查看完整版本: 求助,vs2010编译后出现的问题!