2012-02-03 3 views
8

Я использую Eclipse CDT, чтобы попытаться скомпилировать проект с движком Ogre 3D. Но каким-то образом mingw не может найти статические библиотеки, с которыми я ссылаюсь.MinGW/Eclipse ld.exe не находит библиотеки

Это сообщение об ошибке:

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

... и т.д.. Список выполняется следующим образом для каждой библиотеки.

Как вы можете видеть, я уже знаю, что (IMO) странные «lib» и «.a» дополнения ld.exe, кажется, делают автоматически. Все имена библиотек указаны правильно. Так, например, «freetype_d» на самом деле «libfreetype_d.a».

Я также добавил правильные пути к библиотекам, прежде чем, как это:

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

И каждый файл библиотеки находится в одном из этих двух папок.

Это моя полная командная строка, как показано на 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

Что я здесь отсутствует?

+1

Hahahaha ... Ошибка была «\» в пути directoy. Я заменил их «/», и теперь это работает. Я падаю за это каждый раз;) – TheSHEEEP

ответ

12

В Windows, когда вы добавляете путь библиотек «-L» и нажимаете «Файловая система», Eclipse дает вам путь с «\», измените его на «/», и он будет работать!

0

похоже, что вы должны попытаться удалить «_d» из имен библиотек и добавить -DDEBUG. Кроме того, библиотеки отладки могут храниться в отдельной директории ogre.

+1

Командная строка теперь выглядит так: 'g ++ -L" C: \ Coding \ Ogre \ make-debug \ sdk \ lib \ Debug \ "-L" C: \ Кодирование \ 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' По-прежнему такая же ошибка: не удается найти библиотеки. В любом случае, почему я должен удалить «_d»? Это тоже что-то интерпретирует ld.exe? Должен ли я также удалить «_d» из имен файлов на диске? – TheSHEEEP

+0

Он также выглядит, что компоновщик не может найти zlib и другие libs, которые были отправлены с помощью mingw. Не могли бы вы опубликовать полный вывод этой команды? Вам может понадобиться добавить -L <путь к freetype, zlib и другим mingw libs> –

+1

Как я уже сказал, каждая из этих библиотек находится в одной из двух папок, которые я добавил с помощью -L. И также каждый из них я собрал себя из источников Огра (и зависимостей Ogre). Это включает в себя zlib. Они, безусловно, там. Например, существует «C: \ Coding \ Ogre \ make-debug \ sdk \ lib \ Debug \ opt \ RenderSystem_GLStatic_d.a» ' – TheSHEEEP