怎么使用静态编译的OGRE Plugin
ogre吧
全部回复
仅看楼主
level 9
版本1.10.9
因为这次不想再捣鼓各种DLL,索性全都用上静态编译,包括了QT,boost,freetype2,SDL2等
CMAKE界面可以看到OGRE也有静态编译的选项,打上勾,编译一切正常,没有错误,在lib目录下生成了plugin和RenderSystem_GL的静态文件,libRenderSystem_GLStatic.a
仿佛一切正常,然后开始写代码,代码用的是以前写好的,把那句root->loadPlugin("RenderSystem_GL.dll")去掉了,编译的时候带上了参数-lRenderSystem_GLStatic,编译也没有任何问题
然后运行的时候
11:01:08: Creating resource group General
11:01:08: Creating resource group Internal
11:01:08: Creating resource group Autodetect
11:01:08: SceneManagerFactory for type 'DefaultSceneManager' registered.
11:01:08: Registering ResourceManager for type Material
11:01:08: Registering ResourceManager for type Mesh
11:01:08: Registering ResourceManager for type Skeleton
11:01:08: MovableObjectFactory for type 'ParticleSystem' registered.
11:01:08: ArchiveFactory for archive type FileSystem registered.
11:01:08: ArchiveFactory for archive type Zip registered.
11:01:08: ArchiveFactory for archive type EmbeddedZip registered.
11:01:08: DDS codec registering
11:01:08: stb_image - v2.15 - public domain JPEG/PNG reader
11:01:08: Supported formats: jpeg,jpg,png,bmp,psd,tga,gif,pic,ppm,pgm,hdr
11:01:08: Registering ResourceManager for type HighLevelGpuProgram
11:01:08: Registering ResourceManager for type Compositor
11:01:08: MovableObjectFactory for type 'Entity' registered.
11:01:08: MovableObjectFactory for type 'Light' registered.
11:01:08: MovableObjectFactory for type 'BillboardSet' registered.
11:01:08: MovableObjectFactory for type 'ManualObject' registered.
11:01:08: MovableObjectFactory for type 'BillboardChain' registered.
11:01:08: MovableObjectFactory for type 'RibbonTrail' registered.
11:01:08: FileNotFoundException: 'plugins.cfg' file not found! in ConfigFile::load at E:\Library\source\sinbad-ogre-a02bdc5fd230\OgreMain\src\OgreConfigFile.cpp (line 74)
11:01:08: plugins.cfg not found, automatic plugin loading disabled.
11:01:08: *-*-* OGRE Initialising
11:01:08: *-*-* Version 1.10.9 (Xalafu)
未找到plugins.cfg应该不影响,毕竟OGRE已经开始初始化了,然后,程序就停止运行了,一脸懵逼,不知道怎么解决
是不是还需要加载其他参数?
以上是静态库使用的问题
动态库更加心烦,完全不知道怎么回事,OGRE完全没有启动,异常代码: 0xc0000374,我把所有DLL文件都放到目录下了
2017年09月25日 03点09分 1
level 9
找到了加载静态插件库的方法
2017年09月26日 03点09分 2
level 9
OgreStaticPluginLoader 这个类实例化之后调用load(),什么参数都不要,卸载用unload()
今晚回家试试,这台电脑的速度实在是太慢了,家里的电脑20分钟不到就编译完了OGRE 这台电脑要4个小时……
现在就是搞不明白动态的怎么弄,DLL文件都放进去了,还是程序错误,根本new Root就停止了,烦心
2017年09月26日 03点09分 3
level 9
算是搞定了
不是用OgreStaticPluginLoader调用load(),这个类是属于Bites这个组件的,但是编译这个组件需要用到MSVC还是其他的,我的电脑没装,所以这个也用不了
但是里面提供的代码有很大价值,按照里面的代码写:
Ogre::GLPlugin *pGLPlugin = new Ogre::GLPlugin(); //pRootObject->loadPlugin("RenderSystem_GL.dll"); pRootObject->installPlugin(pGLPlugin);
这样就OK了,一般会加上#ifdef OGRE_STATIC_LIB
编译参数可以这样 -lRenderSystem_GLStatic -lOgreGLSupportStatic
仅仅有-lRenderSystem_GLStatic一定会报错,必须后者支持
然后,其他的插件,比如OctreeSceneManager、CgProgramManager等等可以按照
静态编译的好处就是不需要搭理DLL文件,初次接触这个的时候,DLL文件把我搞烦了
看了一下大小,光是让它弹出一个黑框,就有18M……
2017年09月26日 13点09分 4
没写完就自动提交了,加载其他插件,可以参考Components\Bites\src\OgreStaticPluginLoader.cpp 这文件的内容,所有插件都有
2017年09月26日 13点09分
level 9
最让人郁闷的是,如果自己编译了静态的li
bp
ng,静态编译OGRE没有问题,但是编译动态OGRE就汇报错,Overlay这个组件会无法进行到最后一步,最好的办法还是不要自己编译什么libpng,编译zlib、zziplib、freetype2就行了,CMAKE操作
2017年09月26日 13点09分 5
level 9
终于可以继续捣鼓OGRE了,而且,1.10版本没有继续推荐OIS,不知道是不是他们发现这个不方便编译还是其他原因,总之,我不喜欢编译这个,超烦,还要装dx,真心不想弄这个
感觉前段时间学习1.8的好多东西都已经没大用了,重新开始吧
2017年09月26日 14点09分 6
level 9
至于动态库,我至今都没有解决,不过静态库搞定就行了,也不需要每次都COPY一大堆DLL文件
2017年09月26日 14点09分 7
level 1
编译完所有 插件,需要 DirectX Repair V3.9 (Enhanced Edition) 用着修复一下DirectX。
2020年04月21日 13点04分 8
1