2012-02-03 180 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