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

网上一堆人说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结果就好了。。。

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

 

posted @ 2011-11-01 22:10  eager eagle  阅读(1417)  评论(0编辑  收藏  举报