【问题标题】:MinGW/Eclipse ld.exe does not find librariesMinGW/Eclipse ld.exe 找不到库
【发布时间】:2012-02-26 00:14:45
【问题描述】:

我正在使用 Eclipse CDT 尝试使用 Ogre 3D 引擎编译项目。 但不知何故,mingw 无法找到我链接的静态库。

这些是错误消息:

c:/mingw/bin/../lib/gcc/mingw32/4.6.1/../../../../mingw32/bin/ld.exe:找不到-lzziplib_d

c:/mingw/bin/../lib/gcc/mingw32/4.6.1/../../../../mingw32/bin/ld.exe:找不到-lzlib_d

c:/mingw/bin/../lib/gcc/mingw32/4.6.1/../../../../mingw32/bin/ld.exe:找不到-lfreetype_d

...等等。每个库的列表都是这样的。

正如您可能看到的,我已经知道 ld.exe 似乎自动添加了(IMO)奇怪的“lib”和“.a”添加。这些库都已正确命名。例如,“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

我在这里错过了什么?

【问题讨论】:

  • 哈哈哈...错误是目录路径中的“\”。我用“/”替换了它们,现在它可以工作了。我每次都爱上那个;)

标签: c++ eclipse mingw eclipse-cdt ld


【解决方案1】:

看起来您应该尝试从库名称中删除“_d”并添加 -DDEBUG 。此外,调试库可以存储在单独的 ogre 目录中。

【讨论】:

  • 命令行现在看起来像这样: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”吗?
  • 看起来链接器也找不到 zlib 和其他与 mingw 一起发货的库。您可以发布该命令的完整输出吗?您可能需要添加 -L
  • 正如我已经说过的,这些库中的每一个都位于我使用 -L 添加的两个文件夹之一中。还有每一个都是我自己从 Ogre 源代码(和 Ogre 依赖项)编译的。这包括 zlib 的。他们肯定在那里。比如有一个"C:\Coding\Ogre\make-debug\sdk\lib\Debug\opt\RenderSystem_GLStatic_d.a"
  • 是的,我的错。文件名前面有一个“lib”。准确地说,在每个文件名的前面;)路径是正确的。我的猜测是这里的问题完全不同。
  • 哈哈哈...错误是目录路径中的“\”。我用“/”替换了它们,现在它可以工作了。我每次都爱上那个;)
【解决方案2】:

在 Windows 上,当您添加库路径“-L”并单击“文件系统”时,Eclipse 会为您提供带有“\”的路径,将其更改为“/”即可!

【讨论】:

    猜你喜欢
    • 2019-10-27
    • 1970-01-01
    • 1970-01-01
    • 2021-07-13
    • 1970-01-01
    • 2011-06-23
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多