查看: 2435|回复: 14

jpeg 编译

[复制链接]

该用户从未签到

发表于 2010-12-17 18:02:31 | 显示全部楼层 |阅读模式
有哪位大侠编译了osgdd_jpeg, 不知道是怎么编译的?

另,jp2编译老是链接错误,不知道是什么原因,估计是它采用的jasper库版本问题,我用的是jasper-1.900.1,自己编译的,osg版本为2.9.8,不知道有解决办法没有?

该用户从未签到

 楼主| 发表于 2010-12-17 18:03:14 | 显示全部楼层
ja2 插件编译链接错误,说错了。

该用户从未签到

发表于 2010-12-20 11:02:13 | 显示全部楼层
不是Jasper的版本问题,而是您编译时没有采用/MD作为参数

该用户从未签到

 楼主| 发表于 2010-12-20 14:12:24 | 显示全部楼层
选择了/MD,/MT,/MDd,都不行

该用户从未签到

 楼主| 发表于 2010-12-20 14:13:13 | 显示全部楼层
提示:
LIBCMTD.lib(dbgheap.obj) : error LNK2005: _malloc 已经在 LIBCMT.lib(malloc.obj) 中定义
LIBCMTD.lib(dbgheap.obj) : error LNK2005: __heap_alloc 已经在 LIBCMT.lib(malloc.obj) 中定义
LIBCMTD.lib(dbgheap.obj) : error LNK2005: _calloc 已经在 LIBCMT.lib(calloc.obj) 中定义
LIBCMTD.lib(dbgheap.obj) : error LNK2005: _realloc 已经在 LIBCMT.lib(realloc.obj) 中定义
LIBCMTD.lib(dbgheap.obj) : error LNK2005: __recalloc 已经在 LIBCMT.lib(realloc.obj) 中定义
LIBCMTD.lib(dbgheap.obj) : error LNK2005: _free 已经在 LIBCMT.lib(free.obj) 中定义
LIBCMTD.lib(dbgheap.obj) : error LNK2005: __msize 已经在 LIBCMT.lib(msize.obj) 中定义
LIBCMTD.lib(malloc.obj) : error LNK2005: _V6_HeapAlloc 已经在 LIBCMT.lib(malloc.obj) 中定义
LIBCMTD.lib(dbghook.obj) : error LNK2005: __crt_debugger_hook 已经在 LIBCMT.lib(dbghook.obj) 中定义
LIBCMTD.lib(sbheap.obj) : error LNK2005: __get_sbh_threshold 已经在 LIBCMT.lib(sbheap.obj) 中定义
LIBCMTD.lib(sbheap.obj) : error LNK2005: __set_sbh_threshold 已经在 LIBCMT.lib(sbheap.obj) 中定义
LIBCMTD.lib(sbheap.obj) : error LNK2005: __set_amblksiz 已经在 LIBCMT.lib(sbheap.obj) 中定义
LIBCMTD.lib(sbheap.obj) : error LNK2005: __get_amblksiz 已经在 LIBCMT.lib(sbheap.obj) 中定义
LIBCMTD.lib(sbheap.obj) : error LNK2005: ___sbh_heap_init 已经在 LIBCMT.lib(sbheap.obj) 中定义
LIBCMTD.lib(sbheap.obj) : error LNK2005: ___sbh_find_block 已经在 LIBCMT.lib(sbheap.obj) 中定义
LIBCMTD.lib(sbheap.obj) : error LNK2005: ___sbh_free_block 已经在 LIBCMT.lib(sbheap.obj) 中定义
LIBCMTD.lib(sbheap.obj) : error LNK2005: ___sbh_alloc_block 已经在 LIBCMT.lib(sbheap.obj) 中定义
LIBCMTD.lib(sbheap.obj) : error LNK2005: ___sbh_alloc_new_region 已经在 LIBCMT.lib(sbheap.obj) 中定义
LIBCMTD.lib(sbheap.obj) : error LNK2005: ___sbh_alloc_new_group 已经在 LIBCMT.lib(sbheap.obj) 中定义
LIBCMTD.lib(sbheap.obj) : error LNK2005: ___sbh_resize_block 已经在 LIBCMT.lib(sbheap.obj) 中定义
LIBCMTD.lib(sbheap.obj) : error LNK2005: ___sbh_heapmin 已经在 LIBCMT.lib(sbheap.obj) 中定义
LIBCMTD.lib(sbheap.obj) : error LNK2005: ___sbh_heap_check 已经在 LIBCMT.lib(sbheap.obj) 中定义
LIBCMTD.lib(sbheap.obj) : error LNK2005: ___sbh_pHeaderDefer 已经在 LIBCMT.lib(sbheap.obj) 中定义
LIBCMTD.lib(isctype.obj) : error LNK2005: __isctype_l 已经在 LIBCMT.lib(isctype.obj) 中定义
LIBCMTD.lib(isctype.obj) : error LNK2005: __isctype 已经在 LIBCMT.lib(isctype.obj) 中定义
LINK : warning LNK4098: 默认库“LIBCMT”与其他库的使用冲突;请使用 /NODEFAULTLIB:library
LINK : warning LNK4098: 默认库“LIBCMTD”与其他库的使用冲突;请使用 /NODEFAULTLIB:library
ReaderWriterJP2.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: class std::basic_ostream<char,struct std::char_traits<char> > & __thiscall std::basic_ostream<char,struct std::char_traits<char> >:perator<<(class std::basic_ostream<char,struct std::char_traits<char> > & (__cdecl*)(class std::basic_ostream<char,struct std::char_traits<char> > &))" (__imp_??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@P6AAAV01@AAV01@@Z@Z),该符号在函数 "public: virtual class osgDB::ReaderWriter::ReadResult __thiscall ReaderWriterJP2::readImage(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,class osgDB::Options const *)const " (?readImage@ReaderWriterJP2@@UBE?AVReadResult@ReaderWriter@osgDB@@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PBVOptions@4@@Z) 中被引用
ReaderWriterJP2.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: class std::basic_ostream<char,struct std::char_traits<char> > & __thiscall std::basic_ostream<char,struct std::char_traits<char> >::operator<<(int)" (__imp_??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@H@Z),该符号在函数 "public: virtual class osgDB::ReaderWriter::ReadResult __thiscall ReaderWriterJP2::readImage(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,class osgDB::Options const *)const " (?readImage@ReaderWriterJP2@@UBE?AVReadResult@ReaderWriter@osgDB@@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PBVOptions@4@@Z) 中被引用
ReaderWriterJP2.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: class std::basic_ostream<char,struct std::char_traits<char> > & __thiscall std::basic_ostream<char,struct std::char_traits<char> >::flush(void)" (__imp_?flush@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV12@XZ),该符号在函数 "class std::basic_ostream<char,struct std::char_traits<char> > & __cdecl std::endl(class std::basic_ostream<char,struct std::char_traits<char> > &)" (?endl@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@1@AAV21@@Z) 中被引用
ReaderWriterJP2.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: class std::basic_ostream<char,struct std::char_traits<char> > & __thiscall std::basic_ostream<char,struct std::char_traits<char> >::put(char)" (__imp_?put@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV12@D@Z),该符号在函数 "class std::basic_ostream<char,struct std::char_traits<char> > & __cdecl std::endl(class std::basic_ostream<char,struct std::char_traits<char> > &)" (?endl@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@1@AAV21@@Z) 中被引用
ReaderWriterJP2.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: class std::basic_istream<char,struct std::char_traits<char> > & __thiscall std::basic_istream<char,struct std::char_traits<char> >::read(char *,int)" (__imp_?read@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@PADH@Z),该符号在函数 "public: virtual class osgDB::ReaderWriter::ReadResult __thiscall ReaderWriterJP2::readImage(class std::basic_istream<char,struct std::char_traits<char> > &,class osgDB::Options const *)const " (?readImage@ReaderWriterJP2@@UBE?AVReadResult@ReaderWriter@osgDB@@AAV?$basic_istream@DU?$char_traits@D@std@@@std@@PBVOptions@4@@Z) 中被引用
ReaderWriterJP2.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: class std::basic_ostream<char,struct std::char_traits<char> > & __thiscall std::basic_ostream<char,struct std::char_traits<char> >::write(char const *,int)" (__imp_?write@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV12@PBDH@Z),该符号在函数 "public: virtual class osgDB::ReaderWriter::WriteResult __thiscall ReaderWriterJP2::writeImage(class osg::Image const &,class std::basic_ostream<char,struct std::char_traits<char> > &,class osgDB::Options const *)const " (?writeImage@ReaderWriterJP2@@UBE?AVWriteResult@ReaderWriter@osgDB@@ABVImage@osg@@AAV?$basic_ostream@DU?$char_traits@D@std@@@std@@PBVOptions@4@@Z) 中被引用
ReaderWriterJP2.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: void __thiscall std::basic_ios<char,struct std::char_traits<char> >::setstate(int,bool)" (__imp_?setstate@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEXH_N@Z),该符号在函数 __catch$??$?6U?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@PBD@Z$0 中被引用
ReaderWriterJP2.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: class std::basic_streambuf<char,struct std::char_traits<char> > * __thiscall std::basic_ios<char,struct std::char_traits<char> >::rdbuf(void)const " (__imp_?rdbuf@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEPAV?$basic_streambuf@DU?$char_traits@D@std@@@2@XZ),该符号在函数 "class std::basic_ostream<char,struct std::char_traits<char> > & __cdecl std::operator<<<struct std::char_traits<char> >(class std::basic_ostream<char,struct std::char_traits<char> > &,char const *)" (??$?6U?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@PBD@Z) 中被引用
ReaderWriterJP2.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: char __thiscall std::basic_ios<char,struct std::char_traits<char> >::fill(void)const " (__imp_?fill@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEDXZ),该符号在函数 "class std::basic_ostream<char,struct std::char_traits<char> > & __cdecl std::operator<<<struct std::char_traits<char> >(class std::basic_ostream<char,struct std::char_traits<char> > &,char const *)" (??$?6U?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@PBD@Z) 中被引用
ReaderWriterJP2.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: class std::basic_ostream<char,struct std::char_traits<char> > * __thiscall std::basic_ios<char,struct std::char_traits<char> >::tie(void)const " (__imp_?tie@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEPAV?$basic_ostream@DU?$char_traits@D@std@@@2@XZ),该符号在函数 "public: __thiscall std::basic_ostream<char,struct std::char_traits<char> >::sentry::sentry(class std::basic_ostream<char,struct std::char_traits<char> > &)" (??0sentry@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAE@AAV12@@Z) 中被引用
ReaderWriterJP2.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: void __thiscall std::basic_ostream<char,struct std::char_traits<char> >::_Osfx(void)" (__imp_?_Osfx@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEXXZ),该符号在函数 "public: __thiscall std::basic_ostream<char,struct std::char_traits<char> >::sentry::~sentry(void)" (??1sentry@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAE@XZ) 中被引用
Z:\_Code\OpenSceneGraph-2.9.8\bin\Debug\..\osgPlugins-2.9.8\osgdb_jp2d.dll : fatal error LNK1120: 11 个无法解析的外部命令

该用户从未签到

 楼主| 发表于 2010-12-20 14:24:16 | 显示全部楼层
array神人,搞定。

该用户从未签到

 楼主| 发表于 2010-12-20 14:28:07 | 显示全部楼层
目前我还没有通过编译的插件还有一些,jpeg、gif、png、vrml、svg等。特别时前面几个。
其实我下了第三方依赖库,include和lib、bin目录下都有相关文件,可cmake就是不生成这些工程文件,不知道是什么原因?

该用户从未签到

发表于 2010-12-20 15:42:31 | 显示全部楼层
那说明您没有正确配置相关的cmake选项,例如PNG_INCLUDE_DIR和PNG_LIBRARY等

该用户从未签到

 楼主| 发表于 2010-12-20 15:58:34 | 显示全部楼层
cmake 提示:
Could NOT find JPEG  (missing:  JPEG_LIBRARY)
Could NOT find PNG  (missing:  PNG_LIBRARY)

请问如何处理?

该用户从未签到

 楼主| 发表于 2010-12-20 16:02:00 | 显示全部楼层
没有地方配置 PNG_INCLUDE_DIR等内容啊,Cmakelists中有关的地方只有:
IF(NOT APPLE)
    FIND_PACKAGE(GIFLIB)
    FIND_PACKAGE(JPEG)
    FIND_PACKAGE(PNG)
    FIND_PACKAGE(TIFF)
ENDIF()

该用户从未签到

 楼主| 发表于 2010-12-20 16:03:03 | 显示全部楼层
tiff可以找到,其余三个都找不到,所有的库文件和include文件都是一样地放在lib和include目录下了

该用户从未签到

 楼主| 发表于 2010-12-20 16:42:47 | 显示全部楼层
手工修改makecache后搞定!谢谢array

该用户从未签到

发表于 2010-12-20 16:51:35 | 显示全部楼层
手工修改makecache后搞定
这完全不是可取的做法,您应当首先配置ZLIB的相关选项,然后PNG的选项自然会出现

该用户从未签到

发表于 2010-12-20 19:08:25 | 显示全部楼层
了解下~

该用户从未签到

发表于 2010-12-20 20:46:28 | 显示全部楼层
"LINK : warning LNK4098: 默认库“LIBCMT”与其他库的使用冲突;请使用 /NODEFAULTLIB:library"

不是都说了库冲突了,把LIBCMT忽略就好了,我就是这样编译的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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