【发布时间】: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 中都能正常工作。