【问题标题】:Linker cannot find existing Static Library File链接器找不到现有的静态库文件
【发布时间】:2015-06-12 13:01:07
【问题描述】:

我有一个使用 C 编程语言的 Eclipse 项目。自两天以来,我一直遇到与链接器错误相关的问题。我检查了各种论坛以找到解决方案。尝试了很多建议,但无法解决。所以作为最后的手段,我在这里问问题。我的主程序 MotorRun.c 具有调用静态库 FtMscLib_Static_LIBCMT_Release.Lib 中的函数的代码,该库位于路径 C:\FT-Project\Common\LibsLibs 文件夹中。我正在使用 MinGW gcc 编译器。

当我运行 makefile 时,它​​会产生错误:

c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/4.9.1/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lC:\FT-Project\Common\Libs\FtMscLib_Static_LIBCMT_Release.Lib
collect2.exe: error: ld returned 1 exit status

makefile运行的代码是

gcc "-LC:\\FT-Project\\Common\\Libs" -shared -o libRoboCopMinGW.exe "src\\MotorRun.o" "-lC:\\FT-Project\\Common\\Libs\\FtMscLib_Static_LIBCMT_Release.Lib"

通过查看执行代码,我们可以看到路径和库名称已正确设置,但链接器无法找到它,因此它可以将库与我的 MotorRun.o 目标文件链接。希望有人可以帮助我找到解决方案。 MotorRun.c 程序是一个非常简单的程序,所以我不在这里发布它。但如有必要,我可以稍后更新。提前致谢!

【问题讨论】:

  • 好的,如果你做了revert my edit,那很好,但至少让问题再次可读。谢谢。
  • 您应该运行 gcc 命令并添加 -v。里面可能有线索。
  • @SouravGhosh。对不起,如果它不可读。我尽力把它写清楚。我是这里的新手。

标签: c gcc linker linker-errors linker-scripts


【解决方案1】:

正确的链接器语法通常是这样的:

-Lpath_to_library_directory -lname

库文件名(对于 Windows 静态库)将是 name.lib。因此,您上面的链接器行需要丢失 .lib 部分。您可能还需要在 -l 参数前加上另一个参数 -static,以指示链接器搜索静态库 FtMscLib_Static_LIBCMT_Release.Lib,否则它可能会尝试查找 DLL。

顺便说一句,StackOverflow 上有很多关于与 MinGW 的静态和动态链接问题的帖子,所以也可以随意搜索这些。 MinGW 网页也有许多关于同一主题的提示。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-11
    相关资源
    最近更新 更多