Page 1 of 1

How do I compile Irrlicht lib with code::blocks?

Posted: Tue Feb 17, 2009 1:34 pm
by h.a.n.d
Hi,

As the topic says: I would like to know how do I compile Irrlicht for Win32 with code::blocks.

I already know, that you need to have:

1. MinGW gcc compiler for windows
2. DirectX SDK
3. code::blocks

4. The Irrlicht sources (i.e. from the svn trunk)

Step 1

Open the Irrlicht project file for code::blocks (irrlicht/source/Irrlicht/Irrlicht-gcc.cbp)

Step 2

Right click on the project main folder and choose build options ...
Select the build configuration you want to edit.
I choose Win32 - Release - accurate math - dll.
Under the Search directories/Compiler tab add the Include path from the DirectX SDK

Setp 3

Select the Build target - Win32 - Release - accurate math - dll
Press the build button, code::blocks now compiles the lib.
After code::blocks has finished, you can find a new dll in the irrlicht/bin/gcc folder (Irrlicht.dll).

So far so good, if I now use the new lib to compile my projects I get allways a crash at application starttime when I use opengl as video type,
if I use directx I get a message from irrlicht, that the lib wasn't compiled with directx.

What did I miss?

Posted: Tue Feb 17, 2009 1:41 pm
by JP
Are you using the correct DLL with your project?

Posted: Tue Feb 17, 2009 2:20 pm
by bitplane
Please post the output from the console.

Posted: Tue Feb 17, 2009 8:14 pm
by h.a.n.d
Okay I've tested it with a fresh Irrlicht copy (release version 1.5.0)...

This is the compiler dump:

Code: Select all

-------------- Build: Win32 - Release - accurate math - dll in Irrlicht ---------------

Compiling: C3DSMeshFileLoader.cpp
Compiling: CAnimatedMeshMD2.cpp
Compiling: CAnimatedMeshMD3.cpp
Compiling: CAnimatedMeshSceneNode.cpp
Compiling: CAttributes.cpp
Compiling: CB3DMeshFileLoader.cpp
Compiling: CBSPMeshFileLoader.cpp
Compiling: CBillboardSceneNode.cpp
Compiling: CBoneSceneNode.cpp
Compiling: CBurningShader_Raster_Reference.cpp
Compiling: CCSMLoader.cpp
Compiling: CCameraSceneNode.cpp
Compiling: CColladaFileLoader.cpp
Compiling: CColladaMeshWriter.cpp
Compiling: CColorConverter.cpp
Compiling: CCubeSceneNode.cpp
Compiling: CD3D8Driver.cpp
Compiling: CD3D8NormalMapRenderer.cpp
Compiling: CD3D8ParallaxMapRenderer.cpp
Compiling: CD3D8ShaderMaterialRenderer.cpp
Compiling: CD3D8Texture.cpp
Compiling: CD3D9Driver.cpp
Compiling: CD3D9HLSLMaterialRenderer.cpp
Compiling: CD3D9NormalMapRenderer.cpp
Compiling: CD3D9ParallaxMapRenderer.cpp
Compiling: CD3D9ShaderMaterialRenderer.cpp
Compiling: CD3D9Texture.cpp
Compiling: CDMFLoader.cpp
Compiling: CDefaultGUIElementFactory.cpp
Compiling: CDefaultSceneNodeAnimatorFactory.cpp
Compiling: CDefaultSceneNodeFactory.cpp
Compiling: CDepthBuffer.cpp
Compiling: CDummyTransformationSceneNode.cpp
Compiling: CEmptySceneNode.cpp
Compiling: CFPSCounter.cpp
Compiling: CFileList.cpp
Compiling: CFileSystem.cpp
Compiling: CGUIButton.cpp
Compiling: CGUICheckBox.cpp
Compiling: CGUIColorSelectDialog.cpp
Compiling: CGUIComboBox.cpp
Compiling: CGUIContextMenu.cpp
Compiling: CGUIEditBox.cpp
Compiling: CGUIEnvironment.cpp
Compiling: CGUIFileOpenDialog.cpp
Compiling: CGUIFont.cpp
Compiling: CGUIImage.cpp
Compiling: CGUIInOutFader.cpp
Compiling: CGUIListBox.cpp
Compiling: CGUIMenu.cpp
Compiling: CGUIMeshViewer.cpp
Compiling: CGUIMessageBox.cpp
Compiling: CGUIModalScreen.cpp
Compiling: CGUIScrollBar.cpp
Compiling: CGUISkin.cpp
Compiling: CGUISpinBox.cpp
Compiling: CGUISpriteBank.cpp
Compiling: CGUIStaticText.cpp
Compiling: CGUITabControl.cpp
Compiling: CGUITable.cpp
Compiling: CGUIToolBar.cpp
Compiling: CGUIWindow.cpp
Compiling: CGeometryCreator.cpp
Compiling: CImage.cpp
C:\irrlicht-1.5\source\Irrlicht\CImage.cpp: In member function `void irr::video::CImage::drawLine(const irr::core::position2d<irr::s32>&, const irr::core::position2d<irr::s32>&, const irr::video::SColor&)':
C:\irrlicht-1.5\source\Irrlicht\CImage.cpp:1315: warning: enumeration value `ECF_R5G6B5' not handled in switch
C:\irrlicht-1.5\source\Irrlicht\CImage.cpp:1315: warning: enumeration value `ECF_R8G8B8' not handled in switch
Compiling: CImageLoaderBMP.cpp
Compiling: CImageLoaderJPG.cpp
C:\irrlicht-1.5\source\Irrlicht\CImageLoaderJPG.cpp: In member function `virtual irr::video::IImage* irr::video::CImageLoaderJPG::loadImage(irr::io::IReadFile*) const':
C:\irrlicht-1.5\source\Irrlicht\CImageLoaderJPG.cpp:139: warning: variable 'rowPtr' might be clobbered by `longjmp' or `vfork'
Compiling: CImageLoaderPCX.cpp
Compiling: CImageLoaderPNG.cpp
C:\irrlicht-1.5\source\Irrlicht\CImageLoaderPNG.cpp: In member function `virtual irr::video::IImage* irr::video::CImageLoaderPng::loadImage(irr::io::IReadFile*) const':
C:\irrlicht-1.5\source\Irrlicht\CImageLoaderPNG.cpp:93: warning: variable 'image' might be clobbered by `longjmp' or `vfork'
C:\irrlicht-1.5\source\Irrlicht\CImageLoaderPNG.cpp:95: warning: variable 'RowPointers' might be clobbered by `longjmp' or `vfork'
Compiling: CImageLoaderPPM.cpp
Compiling: CImageLoaderPSD.cpp
Compiling: CImageLoaderTGA.cpp
Compiling: CImageLoaderWAL.cpp
Compiling: CImageWriterBMP.cpp
Compiling: CImageWriterJPG.cpp
Compiling: CImageWriterPCX.cpp
Compiling: CImageWriterPNG.cpp
Compiling: CImageWriterPPM.cpp
Compiling: CImageWriterPSD.cpp
Compiling: CImageWriterTGA.cpp
Compiling: CIrrDeviceLinux.cpp
Compiling: CIrrDeviceStub.cpp
Compiling: CIrrDeviceWin32.cpp
Compiling: CIrrMeshFileLoader.cpp
Compiling: CIrrMeshWriter.cpp
Compiling: CLMTSMeshFileLoader.cpp
Compiling: CLWOMeshFileLoader.cpp
Compiling: CLightSceneNode.cpp
Compiling: CLimitReadFile.cpp
Compiling: CLogger.cpp
Compiling: CMD2MeshFileLoader.cpp
Compiling: CMD3MeshFileLoader.cpp
Compiling: CMS3DMeshFileLoader.cpp
Compiling: CMY3DMeshFileLoader.cpp
Compiling: CMemoryReadFile.cpp
Compiling: CMeshCache.cpp
Compiling: CMeshManipulator.cpp
Compiling: CMeshSceneNode.cpp
Compiling: CMetaTriangleSelector.cpp
Compiling: CNullDriver.cpp
Compiling: COBJMeshFileLoader.cpp
Compiling: COBJMeshWriter.cpp
Compiling: COCTLoader.cpp
Compiling: COSOperator.cpp
Compiling: COctTreeSceneNode.cpp
Compiling: COctTreeTriangleSelector.cpp
Compiling: COgreMeshFileLoader.cpp
Compiling: COpenGLDriver.cpp
C:\irrlicht-1.5\source\Irrlicht\COpenGLDriver.cpp: In member function `bool irr::video::COpenGLDriver::initDriver(irr::SIrrlichtCreationParameters)':
C:\irrlicht-1.5\source\Irrlicht\COpenGLDriver.cpp:72: warning: 'PixelFormat' might be used uninitialized in this function
Compiling: COpenGLExtensionHandler.cpp
Compiling: COpenGLNormalMapRenderer.cpp
Compiling: COpenGLParallaxMapRenderer.cpp
Compiling: COpenGLSLMaterialRenderer.cpp
Compiling: COpenGLShaderMaterialRenderer.cpp
Compiling: COpenGLTexture.cpp
Compiling: CPakReader.cpp
Compiling: CParticleAnimatedMeshSceneNodeEmitter.cpp
Compiling: CParticleAttractionAffector.cpp
Compiling: CParticleBoxEmitter.cpp
Compiling: CParticleCylinderEmitter.cpp
Compiling: CParticleFadeOutAffector.cpp
Compiling: CParticleGravityAffector.cpp
Compiling: CParticleMeshEmitter.cpp
Compiling: CParticlePointEmitter.cpp
Compiling: CParticleRingEmitter.cpp
Compiling: CParticleRotationAffector.cpp
Compiling: CParticleScaleAffector.cpp
Compiling: CParticleSphereEmitter.cpp
Compiling: CParticleSystemSceneNode.cpp
Compiling: CQ3LevelMesh.cpp
Compiling: CQuake3ShaderSceneNode.cpp
Compiling: CReadFile.cpp
Compiling: CSTLMeshFileLoader.cpp
Compiling: CSTLMeshWriter.cpp
Compiling: CSceneCollisionManager.cpp
Compiling: CSceneManager.cpp
Compiling: CSceneNodeAnimatorCameraFPS.cpp
Compiling: CSceneNodeAnimatorCameraMaya.cpp
Compiling: CSceneNodeAnimatorCollisionResponse.cpp
Compiling: CSceneNodeAnimatorDelete.cpp
Compiling: CSceneNodeAnimatorFlyCircle.cpp
Compiling: CSceneNodeAnimatorFlyStraight.cpp
Compiling: CSceneNodeAnimatorFollowSpline.cpp
Compiling: CSceneNodeAnimatorRotation.cpp
Compiling: CSceneNodeAnimatorTexture.cpp
Compiling: CShadowVolumeSceneNode.cpp
Compiling: CSkinnedMesh.cpp
Compiling: CSkyBoxSceneNode.cpp
Compiling: CSkyDomeSceneNode.cpp
Compiling: CSoftwareDriver.cpp
C:\irrlicht-1.5\source\Irrlicht\CSoftwareDriver.cpp: In member function `void irr::video::CSoftwareDriver::drawVertexPrimitiveList16(const void*, irr::u32, const irr::u16*, irr::u32, irr::video::E_VERTEX_TYPE, irr::scene::E_PRIMITIVE_TYPE)':
C:\irrlicht-1.5\source\Irrlicht\CSoftwareDriver.cpp:456: warning: enumeration value `EPT_POINTS' not handled in switch
C:\irrlicht-1.5\source\Irrlicht\CSoftwareDriver.cpp:456: warning: enumeration value `EPT_TRIANGLE_STRIP' not handled in switch
C:\irrlicht-1.5\source\Irrlicht\CSoftwareDriver.cpp:456: warning: enumeration value `EPT_QUAD_STRIP' not handled in switch
C:\irrlicht-1.5\source\Irrlicht\CSoftwareDriver.cpp:456: warning: enumeration value `EPT_QUADS' not handled in switch
C:\irrlicht-1.5\source\Irrlicht\CSoftwareDriver.cpp:456: warning: enumeration value `EPT_POLYGON' not handled in switch
C:\irrlicht-1.5\source\Irrlicht\CSoftwareDriver.cpp:456: warning: enumeration value `EPT_POINT_SPRITES' not handled in switch
Compiling: CSoftwareDriver2.cpp
C:\irrlicht-1.5\source\Irrlicht\CSoftwareDriver2.cpp: In member function `void irr::video::CBurningVideoDriver::lightVertex(irr::video::s4DVertex*, const irr::video::S3DVertex*)':
C:\irrlicht-1.5\source\Irrlicht\CSoftwareDriver2.cpp:1507: warning: enumeration value `ELT_SPOT' not handled in switch
C:\irrlicht-1.5\source\Irrlicht\CSoftwareDriver2.cpp: In member function `virtual void irr::video::CBurningVideoDriver::addDynamicLight(const irr::video::SLight&)':
C:\irrlicht-1.5\source\Irrlicht\CSoftwareDriver2.cpp:1368: warning: enumeration value `ELT_POINT' not handled in switch
C:\irrlicht-1.5\source\Irrlicht\CSoftwareDriver2.cpp:1368: warning: enumeration value `ELT_SPOT' not handled in switch
Compiling: CSoftwareTexture.cpp
Compiling: CSoftwareTexture2.cpp
Compiling: CSphereSceneNode.cpp
Compiling: CTRFlat.cpp
Compiling: CTRFlatWire.cpp
Compiling: CTRGouraud.cpp
Compiling: CTRGouraud2.cpp
Compiling: CTRGouraudAlpha2.cpp
Compiling: CTRGouraudAlphaNoZ2.cpp
Compiling: CTRGouraudWire.cpp
Compiling: CTRTextureBlend.cpp
Compiling: CTRTextureDetailMap2.cpp
Compiling: CTRTextureFlat.cpp
Compiling: CTRTextureFlatWire.cpp
Compiling: CTRTextureGouraud.cpp
Compiling: CTRTextureGouraud2.cpp
Compiling: CTRTextureGouraudAdd.cpp
Compiling: CTRTextureGouraudAdd2.cpp
Compiling: CTRTextureGouraudAddNoZ2.cpp
Compiling: CTRTextureGouraudAlpha.cpp
Compiling: CTRTextureGouraudAlphaNoZ.cpp
Compiling: CTRTextureGouraudNoZ.cpp
Compiling: CTRTextureGouraudNoZ2.cpp
Compiling: CTRTextureGouraudVertexAlpha2.cpp
Compiling: CTRTextureGouraudWire.cpp
Compiling: CTRTextureLightMap2_Add.cpp
Compiling: CTRTextureLightMap2_M1.cpp
Compiling: CTRTextureLightMap2_M2.cpp
Compiling: CTRTextureLightMap2_M4.cpp
Compiling: CTRTextureLightMapGouraud2_M4.cpp
Compiling: CTRTextureWire2.cpp
Compiling: CTerrainSceneNode.cpp
Compiling: CTerrainTriangleSelector.cpp
Compiling: CTextSceneNode.cpp
Compiling: CTriangleBBSelector.cpp
Compiling: CTriangleSelector.cpp
Compiling: CVideoModeList.cpp
Compiling: CVolumeLightSceneNode.cpp
Compiling: CWaterSurfaceSceneNode.cpp
Compiling: CWriteFile.cpp
Compiling: CXMLReader.cpp
Compiling: CXMLWriter.cpp
Compiling: CXMeshFileLoader.cpp
Compiling: CZBuffer.cpp
Compiling: CZipReader.cpp
Compiling: IBurningShader.cpp
Compiling: Irrlicht.cpp
Compiling: irrXML.cpp
Compiling: jpeglib\jcapimin.c
Compiling: jpeglib\jcapistd.c
Compiling: jpeglib\jccoefct.c
Compiling: jpeglib\jccolor.c
Compiling: jpeglib\jcdctmgr.c
Compiling: jpeglib\jchuff.c
Compiling: jpeglib\jcinit.c
Compiling: jpeglib\jcmainct.c
C:\irrlicht-1.5\source\Irrlicht\jpeglib\jcmainct.c: In function `start_pass_main':
C:\irrlicht-1.5\source\Irrlicht\jpeglib\jcmainct.c:71: warning: 'main' is usually a function
C:\irrlicht-1.5\source\Irrlicht\jpeglib\jcmainct.c: In function `process_data_simple_main':
C:\irrlicht-1.5\source\Irrlicht\jpeglib\jcmainct.c:117: warning: 'main' is usually a function
C:\irrlicht-1.5\source\Irrlicht\jpeglib\jcmainct.c: In function `jinit_c_main_controller':
C:\irrlicht-1.5\source\Irrlicht\jpeglib\jcmainct.c:247: warning: 'main' is usually a function
Compiling: jpeglib\jcmarker.c
Compiling: jpeglib\jcmaster.c
Compiling: jpeglib\jcomapi.c
Compiling: jpeglib\jcparam.c
Compiling: jpeglib\jcphuff.c
Compiling: jpeglib\jcprepct.c
Compiling: jpeglib\jcsample.c
Compiling: jpeglib\jctrans.c
Compiling: jpeglib\jdapimin.c
Compiling: jpeglib\jdapistd.c
Compiling: jpeglib\jdatadst.c
Compiling: jpeglib\jdatasrc.c
Compiling: jpeglib\jdcoefct.c
Compiling: jpeglib\jdcolor.c
Compiling: jpeglib\jddctmgr.c
Compiling: jpeglib\jdhuff.c
Compiling: jpeglib\jdinput.c
Compiling: jpeglib\jdmainct.c
C:\irrlicht-1.5\source\Irrlicht\jpeglib\jdmainct.c: In function `alloc_funny_pointers':
C:\irrlicht-1.5\source\Irrlicht\jpeglib\jdmainct.c:162: warning: 'main' is usually a function
C:\irrlicht-1.5\source\Irrlicht\jpeglib\jdmainct.c: In function `make_funny_pointers':
C:\irrlicht-1.5\source\Irrlicht\jpeglib\jdmainct.c:203: warning: 'main' is usually a function
C:\irrlicht-1.5\source\Irrlicht\jpeglib\jdmainct.c: In function `set_wraparound_pointers':
C:\irrlicht-1.5\source\Irrlicht\jpeglib\jdmainct.c:243: warning: 'main' is usually a function
C:\irrlicht-1.5\source\Irrlicht\jpeglib\jdmainct.c: In function `set_bottom_pointers':
C:\irrlicht-1.5\source\Irrlicht\jpeglib\jdmainct.c:272: warning: 'main' is usually a function
C:\irrlicht-1.5\source\Irrlicht\jpeglib\jdmainct.c: In function `start_pass_main':
C:\irrlicht-1.5\source\Irrlicht\jpeglib\jdmainct.c:309: warning: 'main' is usually a function
C:\irrlicht-1.5\source\Irrlicht\jpeglib\jdmainct.c: In function `process_data_simple_main':
C:\irrlicht-1.5\source\Irrlicht\jpeglib\jdmainct.c:349: warning: 'main' is usually a function
C:\irrlicht-1.5\source\Irrlicht\jpeglib\jdmainct.c: In function `process_data_context_main':
C:\irrlicht-1.5\source\Irrlicht\jpeglib\jdmainct.c:389: warning: 'main' is usually a function
C:\irrlicht-1.5\source\Irrlicht\jpeglib\jdmainct.c: In function `jinit_d_main_controller':
C:\irrlicht-1.5\source\Irrlicht\jpeglib\jdmainct.c:478: warning: 'main' is usually a function
Compiling: jpeglib\jdmarker.c
Compiling: jpeglib\jdmaster.c
Compiling: jpeglib\jdmerge.c
Compiling: jpeglib\jdphuff.c
Compiling: jpeglib\jdpostct.c
Compiling: jpeglib\jdsample.c
Compiling: jpeglib\jdtrans.c
Compiling: jpeglib\jerror.c
Compiling: jpeglib\jfdctflt.c
Compiling: jpeglib\jfdctfst.c
Compiling: jpeglib\jfdctint.c
Compiling: jpeglib\jidctflt.c
Compiling: jpeglib\jidctfst.c
Compiling: jpeglib\jidctint.c
Compiling: jpeglib\jidctred.c
Compiling: jpeglib\jmemmgr.c
Compiling: jpeglib\jmemnobs.c
Compiling: jpeglib\jquant1.c
Compiling: jpeglib\jquant2.c
Compiling: jpeglib\jutils.c
Compiling: libpng\png.c
Compiling: libpng\pngerror.c
Compiling: libpng\pngget.c
Compiling: libpng\pngmem.c
Compiling: libpng\pngpread.c
Compiling: libpng\pngread.c
Compiling: libpng\pngrio.c
Compiling: libpng\pngrtran.c
Compiling: libpng\pngrutil.c
Compiling: libpng\pngset.c
Compiling: libpng\pngtrans.c
Compiling: libpng\pngwio.c
Compiling: libpng\pngwrite.c
Compiling: libpng\pngwtran.c
Compiling: libpng\pngwutil.c
Compiling: os.cpp
C:\irrlicht-1.5\source\Irrlicht\os.cpp: In static member function `static irr::u32 irr::os::Timer::getRealTime()':
C:\irrlicht-1.5\source\Irrlicht\os.cpp:103: warning: 'affinityMask' might be used uninitialized in this function
Compiling: zlib\adler32.c
Compiling: zlib\compress.c
Compiling: zlib\crc32.c
Compiling: zlib\deflate.c
Compiling: zlib\inffast.c
Compiling: zlib\inflate.c
Compiling: zlib\inftrees.c
Compiling: zlib\trees.c
Compiling: zlib\uncompr.c
Compiling: zlib\zutil.c
Linking dynamic library: ..\..\lib\gcc\Irrlicht.dll
Creating library file: ..\..\lib\gcc\libIrrlicht.a
Output size is 5.55 MB
Running target post-build steps
mv ../../lib/gcc/Irrlicht.dll ../../bin/gcc/Irrlicht.dll
Execution of 'mv ../../lib/gcc/Irrlicht.dll ../../bin/gcc/Irrlicht.dll' in 'C:\irrlicht-1.5\source\Irrlicht' failed.
Nothing to be done.

OpenGL is running fine now!!!

But I've still got an error with directx. If I'm using driverType = EDT_DIRECT3D9; as renderer I get this msg:
DIRECT3D9 Driver was not compiled into this dll. Try another one.

So I guess the DirectX SDK is not included right.

Posted: Tue Feb 17, 2009 11:07 pm
by hybrid
Yes, you have to enable compiling DX with gcc by another define:
IRR_COMPILE_WITH_DX9_DEV_PACK

Posted: Fri Feb 20, 2009 5:25 pm
by h.a.n.d
(double post)

Posted: Fri Feb 20, 2009 5:27 pm
by h.a.n.d
(double post)

Posted: Fri Feb 20, 2009 5:38 pm
by h.a.n.d
Thanks for this hint!

Reading the $%ยง& comments in the source code would do the trick ;-)


Here is what I've done so far:

IrrCompileConfig.h:

Code: Select all

#define IRR_COMPILE_WITH_DX9_DEV_PACK
#if defined(_IRR_WINDOWS_API_) && (!defined(__GNUC__) || defined(IRR_COMPILE_WITH_DX9_DEV_PACK))

//#define _IRR_COMPILE_WITH_DIRECT3D_8_
#define _IRR_COMPILE_WITH_DIRECT3D_9_

#endif
DirectX9 works fine!
Opengl works fine!

Does anybody know where I can get the DirectX8 SDK?

Posted: Fri Feb 20, 2009 5:57 pm
by zillion42
i would be interested in that aswell... as far as I know all you need is

8 header files:

d3dx8.h
d3dx8core.h
d3dx8effect.h
d3dx8math.h
d3dx8mesh.h
d3dx8shape.h
d3dx8tex.h
d3dx8math.inl

and 1 lib:

d3d8.lib

Now I've got all that, but the linker keeps complaining about the lib, saying it's not in a valid format... It's only 1024 bytes big, so I guess it's indeed broken... I can provide the headers, but I was searching like madman for a working lib... We could zip all that and make a download for everyone else...

Posted: Fri Feb 20, 2009 9:04 pm
by bitplane
zillion42 wrote:Now I've got all that, but the linker keeps complaining about the lib, saying it's not in a valid format... It's only 1024 bytes big, so I guess it's indeed broken... I can provide the headers, but I was searching like madman for a working lib... We could zip all that and make a download for everyone else...
I guess the lib file will be in one of these downloads-
http://ftp.ncnu.edu.tw/MsDownload/directx/8.0a/sdk/

Posted: Sat Feb 21, 2009 10:23 pm
by hybrid
Oh cool an DX8 SDK. However, also the DX9 SDKs up to 2005 (or so) had all necessary DX8 files included.