【问题标题】:GCC/LD cannot find link libraryGCC/LD 找不到链接库
【发布时间】:2023-03-11 01:04:01
【问题描述】:

操作系统:Windows 7 企业版 x64 IDE:Eclipse Juno/CDT 编译器:MinGW 4.6.2 (C:\MinGW)

user697111,我无法让 ld.exe 找到外部库。

简单程序可以正常编译和链接,但是当我尝试使用提供的库添加 SQL 功能时,我在 Eclipse 中收到以下错误消息:“c:/mingw/bin/../lib/gcc/mingw32/4.6. 2/../../../../mingw32/bin/ld.exe: 找不到-lC:\MinGW\lib\libodbc32.a"。

我将 C:\MinGW\lib 指定为项目库路径。我将 C:\MinGW\lib\libodbc32.a 指定为唯一的项目库(这使得未解决的引用错误在 IDE 中消失了)。

我切换到 CLI 并粘贴了编译命令。对于库名称,我尝试过: odbc32、odbc32.a、libodbc32、libcodbc32.a 我也试过: odbccp32、odbccp32.a、libodbccp32、libodbccp32.a 我使用了正斜杠、反斜杠、双反斜杠、路径周围的引号、整个 -l 参数周围的引号(这是 Eclipse 对 -L 参数所做的)。

我将库复制到包含已编译代码的目录中,以消除指定路径的需要。我将它们复制到包含 ld.exe 的目录中。我更新了 Windows 路径以包含该目录并重新启动 Eclipse 和 CLI。

如果我完全删除 -l 参数,我会得到各种未解决的引用错误。似乎 ld.exe 正在找到库,但一心想隐藏真正的问题。

链接到内置 SQL 库的秘诀是什么?

【问题讨论】:

  • 知道了,但还不能发布答案。在 -l 参数上不使用路径,去掉“.a”后缀和“lib”前缀:-lodbc32 路径由 -L 参数提供。要使其在 Eclipse 中工作,请在添加库条目后对其进行编辑。删除路径、“lib”和“.a”。 (Eclipse 将警告使用相对路径的危险。)每当您添加外部库时,请记住此步骤。它在 Eclipse 和 CLI 中都能正常工作。

标签: c++ g++ mingw ld


【解决方案1】:

终于明白了!

使用 CLI 时,不要在 -l 参数中包含路径,去掉“.a”后缀和“lib”前缀: -lodbc32 路径由-L 参数提供。

要使其在 Eclipse 中工作,请在添加后编辑库条目(项目属性/路径和符号/库选项卡)。删除路径、“lib”和“.a”。 (Eclipse 会警告使用相对路径的危险。)添加外部库时请记住此步骤。

它现在在 Eclipse 和 CLI 中都可以正常工作。

【讨论】:

    猜你喜欢
    • 2017-10-19
    • 1970-01-01
    • 1970-01-01
    • 2017-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多