VS2010+64+OSG3.2.1之五Plugins dae编译

转自:http://blog.csdn.net/nuaaqsm0915/article/details/38978971

Plugins dae的编译确实破费一番周折。反反复复试了好多次,最后终于编译成功,特总结如下。

首先了解一下Plugin dae。Plugin dae是用于读取写入以dae为后缀名的3D文件用的,编译后会在osgPlugins-3.2.1目录(3.2.1为osg版本号)下生成osgdb_dae.dll和osgdb_daed.dll两个动态链接库。而dae文件是遵循COLLADA标准的,COLLADA是一个开放的标准,最初用于3D软件数据交换,由SCEA发起,现在则被许多著名厂家支持如Autodesk、XSI等。

关于COLLADA,可以登录官方网站:http://en.wikipedia.org/wiki/COLLADA

通过官网得知,对于COLLADA格式文件的操作,有多种库文件,如:FColladaOpenCOLLADA (C++) 、pycollada (Python) 、StormEngineC (JavaScript)等,其中osg使用的colladadom库。

在Cmake里要对colladadom的相关选项要进行正确设置,才能为后续成功编译Plugin dae打下基础,colladadom这个库,从配置看,要用到boost库、pcre库、libxml库等,进行类似配置如图所示:

相关选项含义:

BOOST:

Boost库是C++标准库的后备库,是一个可移植、提供源代码的C++库,是C++标准化进程的开发引擎之一,随着boost的不断成熟,部分内容会逐渐纳入到标准库中。boost库官网: http://www.boost.org/

PCRE:

PCRE(Perl Compatible Regular Expressions中文含义:perl语言兼容正则表达式)是一个用C语言编写的正则表达式函数库,由菲利普.海泽(Philip Hazel)编写。PCRE是一个轻量级的函数库,比Boost之中的正则表达式库小得多。PCRE十分易用,同时功能也很强大,性能超过了POSIX正则表达式库和一些经典的正则表达式库[1] 。

LIBXML:

是一个XML文件解析库。可以对xml文件进行读写访问

按照上述配置,使用osg自带的lib文件,对于Plugins dae的编译,出的错误很多,主要是链接库错误,类似的错误如下:

根据提示用dumpbin工具对libcollada14dom21.lib进行分析,发现是x86版本的,没有64位版本的,没办法,下载colladadom2.1版本,解压后,在dom\Projects\vc9下有工程文件,在external-libs下面放的是boost、pcre、libxml2等库的lib文件,这是colladadom用到的第三方库文件。

打开colladadom2.1工程文件,设置X64进行编译,colladadom编译不通过。提示链接错误,原来colladadom自带的第三方库也是x86版本的,没办法,只能下载pcre7.6,pcre7.6可以用cmake生成vs2010的工程文件,编译相对简单,编译后生成64位版本的库文件:pcred.lib、pcre.lib、pcrecppd.ib、pcrecpp.lib 、pcreposixd.lib pcreposix.lib。

下载boost1.5.5,对boost1.5.5进行编译,当然编译的过程还是挺费劲的,从网上查找了一下,具体方法参见:http://blog.chinaunix.net/uid-22301538-id-3158997.html,这个资料里面介绍的X86版本的,64位版本的需要在bjam的编译参数里面加个选项:address-model=64,即可编译成64位版本的。编译完成后,生成一堆的lib库文件,其中boost_filesystem-vc100-mt-1_55.lib、boost_filesystem-vc100-mt-gd-1_55.lib、boost_system-vc100-mt-1_55.lib、boost_system-vc100-mt-gd-1_55.lib是我们需要的库文件,注意带gd的是debug版本的。

下载libxml2-2.9.0。libxml2-2.9.0的编译有着实费了一番周折。下载后,解压,在其win32\VC10目录下,有vs工程文件。设为x64模式编译老是通过不,仍然是一堆链接错误。后来发现问题了原来是libxml又引用了libconv库,必须把libconv库的库文件libiconv.lib导入才行,在网上下载了一个,依然编译通不过,用dumpbin分析发现,靠,下载的libiconv.lib是x86版本的,又上网搜了一大圈,找不到x64版本的。没办法,只能下载libiconv.lib库自己编译x64版本了。

从网上下载libiconv-1.14。开始编译libiconv,发现是linux下的工程,在windows下编译比较麻烦。又到网上查资料,找到其编译方法:http://blog.csdn.net/wesleyluo/article/details/8593409。根据网上的方法,把libiconv-1.14编译成功。得到库文件libiconv.lib。在libxml2-2.9.0的工程文件里进行设置,在链接器-输入选项里面,把刚才生成的libiconv.lib输入。再编译libxml2-2.9.0,顺利通过,得到libxml2.lib。

截至目前为止,colladadom需要的库文件终于全部编译通过。在cmake里面进行设置,注意要用自己编译生成的lib文件,不要用osg自带的库文件,参考配置如下:

配置好后,在重新编译plugins dae,编译通过,加载了一个dae模型,如图所示,能够正常显示,终于大功告成!

编译的很辛苦,也有好多收获,总结如下:

1、         plugins dae编译时需要colladadom库,而colladadom需要boost库、pcre库、libxml库等,而libxml库需要libconv库,这充分体现了开源项目的特点,不同的库互相引用。

2、         上述不同的库其版本号正确,版本过旧或过新都可能导致错误,主要表现由于函数名,参数名的不一致导致链接错误或运行失败。

3、         各库文件的位数版本要正确,x64位要引用x64的,x86引用x86的,否则容易出错。

4、         既要充分利用网络掌握开源库编译的基本步骤,也要思考其背后的原理,能够自己修改。

5、         要有耐心。

编译好的libiconv下载地址:

http://download.csdn.net/detail/nuaaqsm0915/7848621

编译好的pcre下载地址:

http://download.csdn.net/detail/nuaaqsm0915/7848579

编译好的libxml2下载地址:

http://download.csdn.net/detail/nuaaqsm0915/7848635

编译好的colladadom2.1下载地址:

http://download.csdn.net/detail/nuaaqsm0915/7848611

编译好的osgdb_dae.dll下载地址:

http://download.csdn.net/detail/nuaaqsm0915/7849641

VS2010+64+OSG3.2.1之五Plugins dae编译的更多相关文章

  1. 【Java】实战Java虚拟机之五“开启JIT编译”

    今天开始实战Java虚拟机之五“开启JIT编译” 总计有5个系列 实战Java虚拟机之一“堆溢出处理” 实战Java虚拟机之二“虚拟机的工作模式” 实战Java虚拟机之三“G1的新生代GC” 实战Ja ...

  2. centos 64位 下hadoop-2.7.2 下编译

    centos 64位 下hadoop-2.7.2 下编译 由于机器安装的是centos 6.7 64位 系统  从hadoop中下载是32位  hadoop 依赖的的库是libhadoop.so 是3 ...

  3. 64位 Windows 用了 32位编译平台 编译不过 MySQL API

    发生在一周前的事情了,当时想感受下 MySQL C API ,就写了几个小例子.虽然是在 Windows(我的工作电脑是 64位 Windows) 上面,但是不想用 VS ,只想用文本软件写好代码后用 ...

  4. VS2010遇到fatal error C1083: 无法打开预编译头文件:“xxx.pch”: No such file or directory

    对C++和VS2010非常不熟悉,但是无奈赶着项目,只能看了点基础就上手,然后就碰到这个问题了. 原因分析: http://bbs.csdn.net/topics/340191697?page=1 编 ...

  5. [转]C#程序无法在64位系统上运行之.NET编译的目标平台

    今天将编译的C#的exe拷贝到测试机上(Win7_64bit),一运行就挂了,提示“stop working”,一开始怀疑测试机上没有安装.net framework框架,追究半天原来是编译的目标平台 ...

  6. VisualBox ubuntu14.04 64位 android4.4.4源码编译总结

    转载请保留出处:http://www.cnblogs.com/wi100sh/p/4337907.html 折腾了好几天,今天终于编译通过,用了4个多小时,太不容易了.如下图所示: 软件环境 虚拟机: ...

  7. WIN7x64+VS2010+OpenCV2.4.10+cmake3.5.0重新编译OpenCV

    1,参考博文 Win7x64+VS2012+OpenCV2.4.3+CMake2.8.10+TBB41重编译OpenCV [OpenCV入门教程之七] 玩转OpenCV源代码:生成OpenCV工程解决 ...

  8. 关于全志A20的Ubuntu12.04 64位系统下环境配置及编译过程笔记【转】

    本文转载自:https://blog.csdn.net/buqingbuyuan/article/details/43370199 在安装Ubuntu系统之后,安装编译所需的GCC等工具,一般选用GC ...

  9. Win64下编译OSG详细过程(Win10+VS2015+OSG3.6.3)

    目录 1. 数据资源准备 2. 编译第三方库 3. 编译GDAL 4. 编译OSG 1) CMAKE_INSTALL_PREFIX: 2) BUILD_OSG_EXAMPLES/BUILD_MFC_ ...

随机推荐

  1. 今天又学了一招,牛逼!!!解决"-bash:No such file or directory"问题

    今天在64服务器上:发现好像bash 坏了,用户名前边   用-bash 显示,,前几天就发现这个问题,,,但是当时忙没有解决,,,,,今天来看看到底是怎么回事! File Exists but... ...

  2. multipart/form-data和application/x-www-form-urlencoded的区别

    在Form元素的语法中,EncType表明提交数据的格式 用 Enctype 属性指定将数据回发到服务器时浏览器使用的编码类型. 下边是说明:  application/x-www-form-urle ...

  3. C和指针 第三章 四种作用域

    代码块作用域: 任何位于一对花括号之间是一个代码块,代码块内声明的标识符具有代码块作用域,嵌套代码块内,内部变量会屏蔽外部相同标示的标示符,非嵌套代码块,不会同时处于活动状态所以不会屏蔽. int m ...

  4. SQLAchemy

    SQLAlchemy是Python编程语言下的一款ORM框架,该框架建立在数据库API之上,使用关系对象映射进行数据库操作,简言之便是:将对象转换成SQL,然后使用数据API执行SQL并获取执行结果.

  5. fdatool 设计IIR滤波器

    [B,A] = sos2tf(SOS);K = cumprod(G);k=K(end); [y_out] = filter(B, A, win_up_data, []) .*k;

  6. Python之模块,迭代器与生成器

    本节涉及内容: 1. 迭代器和生成器 2. 递归 3. 字符串格式化 4. 模块 内置模块 自定义模块 第三方模块 5. 序列化的模块 json pickle (一). 迭代器和生成器: 迭代器:  ...

  7. js 获取元素宽高

    可以用源生js的.offsetHeight .offsetWidth属性 document.getElementById("temp_form").offsetHeight // ...

  8. Vim基础操作

    在正式使用Vim之前,先来点开胃菜,学习下Vim中一些常用的命令,有了这些基本命令,才能让我们使用Vim更加得心应手,加快工作的效率~ 注意:接下来将要介绍的命令主要是用在Vim的Normal模式下. ...

  9. sql 列转行

    原表:转过的表: 代码: ) set @sql = 'select AssetRecordId ' select @sql = @sql + ' , max(case ExtendName when ...

  10. 如何创建 Code Snippet

    比如有一行自定义代码段: @property (nonatomic,copy) NSString *<#string#>; 需要添加到 Code Snippet 上,以帮助开发人员开发更便 ...