2012-02-03 106 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 2012-02-03 11:58:13

回答

12

在Windows上,當您添加庫路徑「-L」並單擊「文件系統」時,Eclipse爲您提供帶有「\」的路徑,將它們更改爲「/」並且它可以工作!

0

看起來像你應該嘗試從庫名稱中刪除「_d」並添加-DDEBUG。此外,調試庫可以存儲在一個單獨的食人魔目錄中。

+1

命令行現在看起來像這樣:'g ++ -L「C:\ Coding \ Ogre \ make-debug \ sdk \ lib \ Debug \」-L「C:\ Coding \ 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 2012-02-03 11:17:43

+0

它也看起來連接器無法找到與mingw一起發貨的zlib和其他庫。你能發佈該命令的完整輸出嗎?您可能需要添加-L <到freetype,zlib和其他mingw庫的路徑> – 2012-02-03 11:30:17

+1

正如我已經說過的那樣,這些庫中的每一個駐留在我使用-L添加的兩個文件夾之一中。而且我也從Ogre資源(和Ogre依賴)編譯我自己的每一個人。這包括zlib的。他們肯定在那裏。例如,有一個''C:\ Coding \ Ogre \ make-debug \ sdk \ lib \ Debug \ opt \ RenderSystem_GLStatic_d.a「 – TheSHEEEP 2012-02-03 11:33:37