2012-02-03 24 views
8

Estoy usando Eclipse CDT para intentar compilar un proyecto con el motor Ogre 3D. Pero de alguna manera, mingw no puede encontrar las bibliotecas estáticas contra las que enlazo.MinGW/Eclipse ld.exe no encuentra bibliotecas

Estos son los mensajes de error:

c:/mingw/bin/../lib/gcc/mingw32/4.6.1/../../../../mingw32/bin/ld.exe: cannot find -lzziplib_d

c:/mingw/bin/../lib/gcc/mingw32/4.6.1/../../../../mingw32/bin/ld.exe: cannot find -lzlib_d

c:/mingw/bin/../lib/gcc/mingw32/4.6.1/../../../../mingw32/bin/ld.exe: cannot find -lfreetype_d

... etc. La lista sigue así para cada biblioteca.

Como probablemente pueda ver, ya soy consciente de las (extrañas) "IMO" adiciones "lib" y ".a" que ld.exe parece hacer automáticamente. Todas las bibliotecas se nombran correctamente. Entonces, por ejemplo, el "freetype_d" realmente es "libfreetype_d.a".

También he añadido las rutas correctas a las bibliotecas antes, así:

-L"C:\Coding\Ogre\make-debug\sdk\lib\Debug\" -L"C:\Coding\Ogre\make-debug\sdk\lib\Debug\opt\"

Y cada archivo de la biblioteca se encuentra en una de estas dos carpetas.

Esta es mi línea de órdenes completa como se muestra por Eclipse CDT:

g++ -L"C:\Coding\Ogre\make-debug\sdk\lib\Debug\" -L"C:\Coding\Ogre\make-debug\sdk\lib\Debug\opt\" -o "OgreTestMinGW" ./BaseApplication.o ./LowLevelOgre.o -lzziplib_d -lzlib_d -lfreetype_d -lFreeImage_d -lOIS_d.dll -lOgreMainStatic_d -lOgrePagingStatic_d -lOgrePropertyStatic_d -lOgreRTShaderSystemStatic_d -lOgreTerrainStatic_d -lRenderSystem_GLStatic_d -lPlugin_ParticleFXStatic_d -lPlugin_PCZSceneManagerStatic_d -lPlugin_OctreeZoneStatic_d -lPlugin_OctreeSceneManagerStatic_d -lPlugin_CgProgramManagerStatic_d -lPlugin_BSPSceneManagerStatic_d

Qué me estoy perdiendo aquí?

+1

Hahahaha ... El error fue "\" en la ruta del directorio. Los reemplacé con "/" y ahora funciona. Me enamoro de eso cada vez;) – TheSHEEEP

Respuesta

12

En Windows, cuando agrega la ruta de bibliotecas "-L" y hace clic en "Sistema de archivos", Eclipse le da la ruta con "\", los cambia a "/" y ¡funcionará!

0

Parece que debe intentar eliminar "_d" de los nombres de la biblioteca y agregar -DDEBUG. Además, las bibliotecas de depuración se pueden almacenar en un directorio ogre separado.

+1

La línea de comando ahora se ve así: 'g ++ -L" C: \ Codificación \ Ogre \ make-debug \ sdk \ lib \ Debug \ "-L" C: \ Codificación \ Ogre \ make-debug \ sdk \ lib \ Debug \ opt \ "-DDEBUG -o" OgreTestMinGW "./BaseApplication.o ./LowLevelOgre.o -lzziplib -lzlib -lfreetype -lFreeImage -lOIS -lOgreMainStatic -lOgrePagingStatic -lOgrePropertyStatic -lOgreRTShaderSystemStatic -lOgreTerrainStatic -lRenderSystem_GLStatic' Sigue el mismo error: no se pueden encontrar las bibliotecas. En cualquier caso, ¿por qué debería eliminar el "_d"? ¿Es eso también algo que el ld.exe interpreta de alguna manera? ¿Debo eliminar también el "_d" de los nombres de los archivos en el disco? – TheSHEEEP

+0

También parece que el vinculador no puede encontrar zlib y otras bibliotecas que se enviaron con mingw. ¿Podría publicar la salida completa de ese comando? Es posible que necesite agregar -L

+1

Como ya dije, cada una de esas bibliotecas reside en una de las dos carpetas que agregué con -L. Y también cada uno de ellos me compilé a partir de las fuentes de Ogre (y las dependencias de Ogre). Eso incluye los zlib. Definitivamente están ahí. Por ejemplo, hay un '" C: \ Coding \ Ogre \ make-debug \ sdk \ lib \ Debug \ opt \ RenderSystem_GLStatic_d.a "' – TheSHEEEP