查看: 5758|回复: 26

求助-无法读取jpg、png文件

[复制链接]

该用户从未签到

发表于 2012-12-31 18:44:14 | 显示全部楼层 |阅读模式
我用的是osg3.0.1源代码,编译时通过该cmake的参数,找到了libjpeg、libpng等库文件,编译时没有问题,但是用的使用就出问题了,读取jpg是直接就返回null,文件路径绝对没有问题,读取png时说计算机没有libpng13.dll,不知道什么错误。在bin\osgplugins3.0.1中有libjpeg.dll,ligpng.dll等文件。配置cmake时PNG_LIBRARY是libpng13.lib、PNG_LIBRARY_DEBUG是libpng13d.lib,弄了一天了,请帮一下忙

该用户从未签到

 楼主| 发表于 2013-1-1 13:03:20 | 显示全部楼层
本帖最后由 00450681 于 2013-1-1 13:42 编辑
FreeSouth 发表于 2012-12-31 22:24
libjpeg.dll,ligpng.dll 是要放在path下的。


放了,放在C:\OSG\bin下.还有那个jpeg的究竟是用jpeg.lib jpegD.lib还是用libjpeg libjpegD呢
  • TA的每日心情
    开心
    2019-11-11 10:36
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2012-12-31 22:24:02 | 显示全部楼层
    libjpeg.dll,ligpng.dll 是要放在path下的。

    该用户从未签到

    发表于 2013-1-1 16:30:20 | 显示全部楼层
    我上传过osgdb_png.dll与osgdb_jpeg.dll,你可以在本论坛上面找到它们,它们链接的是libpng和libjpeg的静态库,不依赖于libjpeg.dll和libpng.dll库,你可以直接下载下来用就行了...

    该用户从未签到

     楼主| 发表于 2013-1-2 23:26:44 | 显示全部楼层
    本帖最后由 00450681 于 2013-1-3 00:16 编辑
    the_mercury 发表于 2013-1-1 16:30
    我上传过osgdb_png.dll与osgdb_jpeg.dll,你可以在本论坛上面找到它们,它们链接的是libpng和libjpeg的静态 ...


    我其实是自己编译,不是很想直接用别人弄好的,还是谢谢你。
    我重新编译了一遍,插件的osgdb_jpeg.dll, osgdb_jpegD.dll已经有了,但在读jpg图片的时候还是返回空了,真实受不了了

    该用户从未签到

    发表于 2013-1-3 11:58:30 | 显示全部楼层
    其实我的也是自己编译的
    你可以调试一下呀,插件是可以调试的。注意你在调试的时候要事先把osgdb_jpegd.pdb文件放在与osgdb_jpegd.dll相同的目录下面,否则visual studio将找不到调试信息...

    该用户从未签到

     楼主| 发表于 2013-1-3 13:55:41 | 显示全部楼层
    the_mercury 发表于 2013-1-3 11:58
    其实我的也是自己编译的
    你可以调试一下呀,插件是可以调试的。注意你在调试的时候要事先把osgdb_jpegd.pd ...

    还是不行,它说我的计算机丢失MSVCP100D.dll,我在网上下载了并放到system32中再在运行那注册注册不了,说没有找到模块入口,然后我把这个dll拷贝到工程的目录里还是不行,还是丢失

    该用户从未签到

    发表于 2013-1-3 14:07:47 | 显示全部楼层
    00450681 发表于 2013-1-3 13:55
    还是不行,它说我的计算机丢失MSVCP100D.dll,我在网上下载了并放到system32中再在运行那注册注册不了,说 ...

    你自己编译下插件就可以了。设置成静态编译的话就不需要dll文件了。用别人编译的dll很多是依赖编译机器的多线程库的,跟你机器版本不一样就用不了了。

    该用户从未签到

     楼主| 发表于 2013-1-3 18:50:00 | 显示全部楼层
    本帖最后由 00450681 于 2013-1-3 18:57 编辑
    smash 发表于 2013-1-3 14:07
    你自己编译下插件就可以了。设置成静态编译的话就不需要dll文件了。用别人编译的dll很多是依赖编译机器的 ...


    插件什么的都是我自己编译的,不过倒是没有设置成静态编译。问题是全部插件都是我自己一个编译的,读什么osg文件的插件就没有问题,只有jpeg、png、gif出问题了

    该用户从未签到

    发表于 2013-1-4 11:34:22 | 显示全部楼层
    00450681 发表于 2013-1-3 18:50
    插件什么的都是我自己编译的,不过倒是没有设置成静态编译。问题是全部插件都是我自己一个编译的,读什 ...

    那应该没有问题,丢失的MSVCP100D.dll倒VS2010的安装目录下就能找到了。

    该用户从未签到

     楼主| 发表于 2013-1-4 12:32:17 | 显示全部楼层
    smash 发表于 2013-1-4 11:34
    那应该没有问题,丢失的MSVCP100D.dll倒VS2010的安装目录下就能找到了。

    所以说对于jpeg、png、gif读不了比较郁闷啊

    该用户从未签到

    发表于 2013-1-4 13:13:45 | 显示全部楼层
    00450681 发表于 2013-1-4 12:32
    所以说对于jpeg、png、gif读不了比较郁闷啊

    肯定是你没设置好的原因,某些设置对不起来,或者debug库和release混用了。

    该用户从未签到

     楼主| 发表于 2013-1-4 14:06:37 | 显示全部楼层
    smash 发表于 2013-1-4 13:13
    肯定是你没设置好的原因,某些设置对不起来,或者debug库和release混用了。

    没有吧,我用cmake生成工程的时候,添加3rdParty后configure,cmake是自动地帮我找到所有需要的库,当然QT那些我没有,但是jpeg、png、gif的库全部齐全,而且是自动找的,怎么可能错呢?Debug库都有d结尾,这个我知道,我没有混用了....

    该用户从未签到

    发表于 2013-1-4 14:17:27 | 显示全部楼层
    你直接loadlibrary读一下编译的插件库看看加载会不会出问题啊。

    该用户从未签到

     楼主| 发表于 2013-1-4 14:25:31 | 显示全部楼层
    smash 发表于 2013-1-4 14:17
    你直接loadlibrary读一下编译的插件库看看加载会不会出问题啊。

    osgDBd.lib还是libjpegD.lib啊?

    该用户从未签到

     楼主| 发表于 2013-1-4 14:34:09 | 显示全部楼层
    00450681 发表于 2013-1-4 14:25
    osgDBd.lib还是libjpegD.lib啊?

    这个不太会用,能解说一下么

    该用户从未签到

    发表于 2013-1-4 15:21:10 | 显示全部楼层
    本帖最后由 smash 于 2013-1-4 15:21 编辑
    00450681 发表于 2013-1-4 14:25
    osgDBd.lib还是libjpegD.lib啊?


    jepg.dll, png.dll之类。

    该用户从未签到

     楼主| 发表于 2013-1-4 19:56:51 | 显示全部楼层
    smash 发表于 2013-1-4 15:21
    jepg.dll, png.dll之类。

    试过了,用LoadLibrary打开为空

    该用户从未签到

     楼主| 发表于 2013-1-4 20:20:39 | 显示全部楼层
    试过了,用LoadLibrary打开为空,别沉啊,很重要的啊

    该用户从未签到

     楼主| 发表于 2013-1-4 20:35:16 | 显示全部楼层
    smash 发表于 2013-1-4 15:21
    jepg.dll, png.dll之类。

    用LoadLibrary加载osgdb_pngd.dll返回为空,osgdb_jpegd.dll和osgdb_gifd.dll都返回不为空了,好像是我缺了msvcp100d.dll和msvcr100d.dll,那个png的怎么办啊

    该用户从未签到

     楼主| 发表于 2013-1-4 20:35:23 | 显示全部楼层
    用LoadLibrary加载osgdb_pngd.dll返回为空,osgdb_jpegd.dll和osgdb_gifd.dll都返回不为空了,好像是我缺了msvcp100d.dll和msvcr100d.dll,那个png的怎么办啊

    该用户从未签到

    发表于 2013-1-4 21:12:30 | 显示全部楼层
    00450681 发表于 2013-1-4 20:35
    用LoadLibrary加载osgdb_pngd.dll返回为空,osgdb_jpegd.dll和osgdb_gifd.dll都返回不为空了,好像是我缺了 ...

    msvcp100d.dll和msvcr100d.dll这几个在的vs安装目录下搜一下不就有了么。把这个目录添加到path环境变量中就行了啊。

    该用户从未签到

     楼主| 发表于 2013-1-5 13:22:05 | 显示全部楼层
    本帖最后由 00450681 于 2013-1-5 13:50 编辑
    smash 发表于 2013-1-4 21:12
    msvcp100d.dll和msvcr100d.dll这几个在的vs安装目录下搜一下不就有了么。把这个目录添加到path环境变量中 ...


    这两个dll我已经搞好了,不过那个png的dll打开返回为空,你有那个pngd.dll的文件么?而且那个jpeg的dll虽然能够打开了,但是图片还是读不了啊

    该用户从未签到

    发表于 2013-1-5 23:37:58 | 显示全部楼层
    00450681 发表于 2013-1-5 13:22
    这两个dll我已经搞好了,不过那个png的dll打开返回为空,你有那个pngd.dll的文件么?而且那个jpeg的dll ...

    png插件和jpeg第三方库你自己设置成静态链接,重新编译下就不会有问题了。

    该用户从未签到

    发表于 2013-1-6 12:54:01 | 显示全部楼层
    直接用Visual Studio 建一dll工程,把插件源文件放工程里面编译链接就行了...

    该用户从未签到

     楼主| 发表于 2013-1-6 14:38:51 | 显示全部楼层
    我试试,谢谢各位了

    该用户从未签到

     楼主| 发表于 2013-1-10 23:05:23 | 显示全部楼层
    解决了,不过是非常无奈地解决了,换成vs2010的开发环境,原本用的是vs2012,看来不能追太新了
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

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

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

    联系我们

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