[Solved] FreeImage linking fails building Ogre on Windows

Problems building or running the engine, queries about how to use features etc.
Post Reply
User avatar
WilliamKappler
Kobold
Posts: 33
Joined: Mon Feb 16, 2015 8:37 pm
Location: Raleigh, NC
x 2
Contact:

[Solved] FreeImage linking fails building Ogre on Windows

Post by WilliamKappler »

EDIT (solution): I don't know why the precompiled FreeImage failed, but I was able to build just FreeImage out of the Ogre-packaged dependencies as suggested by spacegaier, which linked without issue.

Thank you for the help.


I am attempting to build Ogre on windows, but utterly failing to get FreeImage to link to it. Ogre will build fine without FreeImage support, but as soon as I attempt to enable it, the linking fails. I don't know if this is a name mangling issue, but I thought FreeImage was entirely in C, and thus should not have any such issues.

I attempted to build FreeImage, but ran into compiling errors. Before I attempt to deal with those, I thought it was best to ask about my root problem: why FreeImage isn't linking.

OS: Windows 7 64 bit
Ogre: OGRE 1.10.0unstable
FreeImage: 3.16.0 [WIN32] (http://downloads.sourceforge.net/freeim ... 0Win32.zip)
Compiler: g++ (GCC) 4.8.1

Code: Select all

C:\Users\Bakaiya\Documents\Ogre Build GCC>make -j8
Linking CXX shared library ..\bin\OgreMain.dll
CMakeFiles\OgreMain.dir/objects.a(OgreFreeImageCodec.cpp.obj): In function `ZNK4Ogre14FreeImageCodec20magicNumberToFileExtEPKcj':
C:/Users/Bakaiya/Documents/ogre/OgreMain/src/OgreFreeImageCodec.cpp:582: undefined reference to `FreeImage_OpenMemory'
C:/Users/Bakaiya/Documents/ogre/OgreMain/src/OgreFreeImageCodec.cpp:584: undefined reference to `FreeImage_GetFileTypeFromMemory'
C:/Users/Bakaiya/Documents/ogre/OgreMain/src/OgreFreeImageCodec.cpp:585: undefined reference to `FreeImage_CloseMemory'
C:/Users/Bakaiya/Documents/ogre/OgreMain/src/OgreFreeImageCodec.cpp:589: undefined reference to `FreeImage_GetFormatFromFIF'
CMakeFiles\OgreMain.dir/objects.a(OgreFreeImageCodec.cpp.obj): In function `ZNK4Ogre14FreeImageCodec12encodeBitmapERNS_9SharedPtrINS_16MemoryDataStreamEEERNS1_INS_5Codec9CodecDataEEE':
C:/Users/Bakaiya/Documents/ogre/OgreMain/src/OgreFreeImageCodec.cpp:257: undefined reference to `FreeImage_FIFSupportsExportType'
C:/Users/Bakaiya/Documents/ogre/OgreMain/src/OgreFreeImageCodec.cpp:282: undefined reference to `FreeImage_FIFSupportsExportBPP'
C:/Users/Bakaiya/Documents/ogre/OgreMain/src/OgreFreeImageCodec.cpp:318: undefined reference to `FreeImage_AllocateT'
C:/Users/Bakaiya/Documents/ogre/OgreMain/src/OgreFreeImageCodec.cpp:318: undefined reference to `FreeImage_AllocateT'
C:/Users/Bakaiya/Documents/ogre/OgreMain/src/OgreFreeImageCodec.cpp:340: undefined reference to `FreeImage_GetPitch'
C:/Users/Bakaiya/Documents/ogre/OgreMain/src/OgreFreeImageCodec.cpp:345: undefined reference to `FreeImage_GetBits'
C:/Users/Bakaiya/Documents/ogre/OgreMain/src/OgreFreeImageCodec.cpp:335: undefined reference to `FreeImage_ConvertToGreyscale'
C:/Users/Bakaiya/Documents/ogre/OgreMain/src/OgreFreeImageCodec.cpp:336: undefined reference to `FreeImage_Unload'
C:/Users/Bakaiya/Documents/ogre/OgreMain/src/OgreFreeImageCodec.cpp:258: undefined reference to `FreeImage_FIFSupportsExportBPP'
C:/Users/Bakaiya/Documents/ogre/OgreMain/src/OgreFreeImageCodec.cpp:284: undefined reference to `FreeImage_FIFSupportsExportBPP'
C:/Users/Bakaiya/Documents/ogre/OgreMain/src/OgreFreeImageCodec.cpp:294: undefined reference to `FreeImage_FIFSupportsExportBPP'
CMakeFiles\OgreMain.dir/objects.a(OgreFreeImageCodec.cpp.obj): In function `ZNK4Ogre14FreeImageCodec12encodeToFileERNS_9SharedPtrINS_16MemoryDataStreamEEERKSsRNS1_INS_5Codec9CodecDataEEE':
C:/Users/Bakaiya/Documents/ogre/OgreMain/src/OgreFreeImageCodec.cpp:395: undefined reference to `FreeImage_Save'
C:/Users/Bakaiya/Documents/ogre/OgreMain/src/OgreFreeImageCodec.cpp:396: undefined reference to `FreeImage_Unload'
CMakeFiles\OgreMain.dir/objects.a(OgreFreeImageCodec.cpp.obj): In function `ZNK4Ogre14FreeImageCodec6encodeERNS_9SharedPtrINS_16MemoryDataStreamEEERNS1_INS_5Codec9CodecDataEEE':
C:/Users/Bakaiya/Documents/ogre/OgreMain/src/OgreFreeImageCodec.cpp:367: undefined reference to `FreeImage_OpenMemory'
C:/Users/Bakaiya/Documents/ogre/OgreMain/src/OgreFreeImageCodec.cpp:369: undefined reference to `FreeImage_SaveToMemory'
C:/Users/Bakaiya/Documents/ogre/OgreMain/src/OgreFreeImageCodec.cpp:373: undefined reference to `FreeImage_AcquireMemory'
C:/Users/Bakaiya/Documents/ogre/OgreMain/src/OgreFreeImageCodec.cpp:381: undefined reference to `FreeImage_CloseMemory'
C:/Users/Bakaiya/Documents/ogre/OgreMain/src/OgreFreeImageCodec.cpp:383: undefined reference to `FreeImage_Unload'
CMakeFiles\OgreMain.dir/objects.a(OgreFreeImageCodec.cpp.obj): In function `ZN4Ogre14FreeImageCodec7startupEv':
C:/Users/Bakaiya/Documents/ogre/OgreMain/src/OgreFreeImageCodec.cpp:79: undefined reference to `FreeImage_Initialise'
C:/Users/Bakaiya/Documents/ogre/OgreMain/src/OgreFreeImageCodec.cpp:83: undefined reference to `FreeImage_GetVersion'
C:/Users/Bakaiya/Documents/ogre/OgreMain/src/OgreFreeImageCodec.cpp:86: undefined reference to `FreeImage_GetCopyrightMessage'
C:/Users/Bakaiya/Documents/ogre/OgreMain/src/OgreFreeImageCodec.cpp:92: undefined reference to `FreeImage_GetFIFCount'
C:/Users/Bakaiya/Documents/ogre/OgreMain/src/OgreFreeImageCodec.cpp:100: undefined reference to `FreeImage_GetFIFExtensionList'
C:/Users/Bakaiya/Documents/ogre/OgreMain/src/OgreFreeImageCodec.cpp:128: undefined reference to `FreeImage_SetOutputMessage'
CMakeFiles\OgreMain.dir/objects.a(OgreFreeImageCodec.cpp.obj): In function `ZN4Ogre25FreeImageLoadErrorHandlerE17FREE_IMAGE_FORMATPKc':
C:/Users/Bakaiya/Documents/ogre/OgreMain/src/OgreFreeImageCodec.cpp:55: undefined reference to `FreeImage_GetFormatFromFIF'
CMakeFiles\OgreMain.dir/objects.a(OgreFreeImageCodec.cpp.obj): In function `ZN4Ogre14FreeImageCodec8shutdownEv':
C:/Users/Bakaiya/Documents/ogre/OgreMain/src/OgreFreeImageCodec.cpp:137: undefined reference to `FreeImage_DeInitialise'
CMakeFiles\OgreMain.dir/objects.a(OgreFreeImageCodec.cpp.obj): In function `ZNK4Ogre14FreeImageCodec6decodeERNS_9SharedPtrINS_10DataStreamEEE':
C:/Users/Bakaiya/Documents/ogre/OgreMain/src/OgreFreeImageCodec.cpp:405: undefined reference to `FreeImage_OpenMemory'
C:/Users/Bakaiya/Documents/ogre/OgreMain/src/OgreFreeImageCodec.cpp:408: undefined reference to `FreeImage_LoadFromMemory'
C:/Users/Bakaiya/Documents/ogre/OgreMain/src/OgreFreeImageCodec.cpp:421: undefined reference to `FreeImage_GetWidth'
C:/Users/Bakaiya/Documents/ogre/OgreMain/src/OgreFreeImageCodec.cpp:422: undefined reference to `FreeImage_GetHeight'
C:/Users/Bakaiya/Documents/ogre/OgreMain/src/OgreFreeImageCodec.cpp:428: undefined reference to `FreeImage_GetImageType'
C:/Users/Bakaiya/Documents/ogre/OgreMain/src/OgreFreeImageCodec.cpp:429: undefined reference to `FreeImage_GetColorType'
C:/Users/Bakaiya/Documents/ogre/OgreMain/src/OgreFreeImageCodec.cpp:430: undefined reference to `FreeImage_GetBPP'
C:/Users/Bakaiya/Documents/ogre/OgreMain/src/OgreFreeImageCodec.cpp:545: undefined reference to `FreeImage_GetBits'
C:/Users/Bakaiya/Documents/ogre/OgreMain/src/OgreFreeImageCodec.cpp:546: undefined reference to `FreeImage_GetPitch'
C:/Users/Bakaiya/Documents/ogre/OgreMain/src/OgreFreeImageCodec.cpp:563: undefined reference to `FreeImage_Unload'
C:/Users/Bakaiya/Documents/ogre/OgreMain/src/OgreFreeImageCodec.cpp:564: undefined reference to `FreeImage_CloseMemory'
C:/Users/Bakaiya/Documents/ogre/OgreMain/src/OgreFreeImageCodec.cpp:461: undefined reference to `FreeImage_IsTransparent'
C:/Users/Bakaiya/Documents/ogre/OgreMain/src/OgreFreeImageCodec.cpp:470: undefined reference to `FreeImage_ConvertTo24Bits'
C:/Users/Bakaiya/Documents/ogre/OgreMain/src/OgreFreeImageCodec.cpp:474: undefined reference to `FreeImage_Unload'
C:/Users/Bakaiya/Documents/ogre/OgreMain/src/OgreFreeImageCodec.cpp:477: undefined reference to `FreeImage_GetBPP'
C:/Users/Bakaiya/Documents/ogre/OgreMain/src/OgreFreeImageCodec.cpp:465: undefined reference to `FreeImage_ConvertTo32Bits'
C:/Users/Bakaiya/Documents/ogre/OgreMain/src/OgreFreeImageCodec.cpp:489: undefined reference to `FreeImage_GetGreenMask'
C:/Users/Bakaiya/Documents/ogre/OgreMain/src/OgreFreeImageCodec.cpp:450: undefined reference to `FreeImage_ConvertToGreyscale'
C:/Users/Bakaiya/Documents/ogre/OgreMain/src/OgreFreeImageCodec.cpp:452: undefined reference to `FreeImage_Unload'
collect2.exe: error: ld returned 1 exit status
OgreMain\CMakeFiles\OgreMain.dir\build.make:4984: recipe for target 'bin/OgreMain.dll' failed
make[2]: *** [bin/OgreMain.dll] Error 1
CMakeFiles\Makefile2:74: recipe for target 'OgreMain/CMakeFiles/OgreMain.dir/all' failed
make[1]: *** [OgreMain/CMakeFiles/OgreMain.dir/all] Error 2
Makefile:136: recipe for target 'all' failed
make: *** [all] Error 2
In ogre\Dependencies\lib, I have FreeImage.dll and FreeImage.lib. Cmake seems to find both as it shows those locations after configure. Relevant Cmake info: http://i.imgur.com/4PnDezX.png
Last edited by WilliamKappler on Mon Feb 16, 2015 11:08 pm, edited 1 time in total.
User avatar
spacegaier
OGRE Team Member
OGRE Team Member
Posts: 4304
Joined: Mon Feb 04, 2008 2:02 pm
Location: Germany
x 135
Contact:

Re: FreeImage linking goes wrong building Ogre on Windows

Post by spacegaier »

Did you use the official Ogre Dependencies or did you try to grab your own copy of FreeImage and the other libraries needed?
Ogre Admin [Admin, Dev, PR, Finance, Wiki, etc.] | BasicOgreFramework | AdvancedOgreFramework
Don't know what to do in your spare time? Help the Ogre wiki grow! Or squash a bug...
User avatar
WilliamKappler
Kobold
Posts: 33
Joined: Mon Feb 16, 2015 8:37 pm
Location: Raleigh, NC
x 2
Contact:

Re: FreeImage linking goes wrong building Ogre on Windows

Post by WilliamKappler »

spacegaier wrote:Did you use the official Ogre Dependencies or did you try to grab your own copy of FreeImage and the other libraries needed?
I got my own copies; the official ones seemed fairly outdated on the sources page and I was not sure if they would work with the newest source; I wasn't aware of there being a newer version. I only wanted freetype, zlib, and freeimage at this point, and the only one that had issues was freeimage.

I'll try and see if the dependencies package you linked fixes the issue.
Post Reply