vs2017 编译 ogre x64

8 篇文章 0 订阅

在windows上要用ogre。之前是vs2015版本,编译好的,直接用了。
这次上官网看只有vs2017_x64版本的,下载试用,发现建立 Ogre::Root的时候就错了。
只能自己编译了。

我编译的是ogre 1.10.11 版本。

ogre 经常修改 API,如果某个版本代码工作正常,最好不要换版本,否则要修改非常久。。。

说下编译的坑:

坑一:编译x64版本的不要让ogre自动下载依赖库

ogre为了方便编译,会自动下载zlib等第三方库,直接编译,这样就不用用户编译了,这在编译x86版本时很好。
但是,这个方法有一个致命bug:ogre编译时自动下载的zlib代码,只会编译x86版本。
编译到最后,会出现x86和x64不兼容的问题。

坑二:编译ogredeps

ogre用的第三方库比较多,为了方便编译,自己建了依赖库的目录。bucketbit官网依赖库
github上虽然也有ogredeps,但很久不更新了。
然后下载代码,要clone,直接下载zip可能会漏掉一些支持库
ogredeps下载要非常久,我下载了两个多小时。
下载编译完成,开始编译
这里有一点要说明下,直接编译,之后链接ogre时,会出现如下错误:

error LNK2019: unresolved external symbol _deflateEnd@4 referenced in function
error LNK2019: unresolved external symbol _deflate@8 referenced in function
error LNK2019: unresolved external symbol _deflateInit_@16 referenced in function

这是因为zlib默认不编译dll,要编译dll,要添加预定义宏 ZBLI_WINAPI

坑三:关闭ogre 默认下载编译depdencies

直接在cmake-gui中关闭的ogre默认编译dependencies功能,并不好用,因为:

  1. 第一次还是会下载这些依赖库并编译出来,时间是一方面
  2. 更关键 的是之后要手动在IDE中为各个dll库删除自动下载的库,因为这些库是x86版本的,而且是默认优先被链接。(这点确实应该吐槽CMake的缓存机制,很多时候不好用,只能手工删除才行)
    解决办法:在ogre代码目录/CMake/Dependencies.cmake内,在头几行找OGRE_BUILD_DEPENDENCIES,改为
option(OGRE_BUILD_DEPENDENCIES "automatically build Ogre Dependencies (freetype, zzip)" FALSE)

然后在cmake-gui中将OGRE_DEPENDENCIES_DIR设定为自己编译的ogredeps的目录

至此,可以正常编译ogre 1.10.11

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值