OGRE库编译和使用问题,重定义以及dxguid.lib 调试信息损坏,请重新编译 等各种问题解决...

博主分享了使用OGRE游戏引擎过程中遇到的各种编译问题及解决方案,特别是关于类型重定义错误、静态链接问题以及依赖库冲突等常见难题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

网上一堆人说OGRE如何编译成功但没见过几个说如何用OGRE编个能跑的程序。

我为此烦了一周了,各种可能都试过(boost,depends,ogre,使用OGRE的项目,分别静态/动态库,静态/动态运行时的互相组合),甚至装了VS2010 + SP1。。。

但每次都是STL中的一堆类型已经在XX库定义。(不同组合是不同的类型重定义,但一般都是LIBCMT/D.LIB和MSVCRT/D.LIB互相重定义) ,知道是某些库用的运行时库不一致造成的,可是就是没找出是哪一个。有次好像通过忽略msvcrt/d.lib库过了。

 

最好的一次结果是全静态连接运行时库的静态库,最后samplebrowser.exe 编出来20M,不需要任何DLL。

但是用到我的测试程序上,编出来也是20M,可是跑不起来。。没有加载renderSystem, D3dx9的renderSystem是在加载DLL时作为插件附加上去的。

但我这是静态连接的,咋搞?可是sampleBrowser都可以不用DLL正常运行,纳闷!最后放弃。。。

 

如果是连接时有DX相关的类型找不到符号,项目记得附加DX的lib目录

如果是跟输入相关的 input,keyboard, mouse什么字样的,附加 dinput8.lib

如果是GUID相关的,附加 dxguid.lib

 

后来折腾的不行了,从OGRE上下了个编好的1.7.2的SDK包,里面有lib,dll,头文件,附带用到的boost库,很贴心。不过他是md,mdd编译的。。

也就是说你的东西要发给别人玩,需要对方的机器上安装了VC8运行时才行。龊是龊了一点,能跑就好。

但是。。。

一编译就说 dxguid.lib 调试信息损坏,请重新编译。。。无解。。。。

 郁闷一天。。。。

突然想起,以前实验各种方法时每次都是OIS库出的问题,我现在用的1.7.2的库,但ois还是用的1.7.3的自己编的depends中的。直接指明是用1.7.2中附带的ois.lib结果就好了。。。

 唉,功夫不负有心人呐。。。。

 

转载于:https://www.cnblogs.com/eagereagle/archive/2011/11/01/2232253.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值