链接器找不到现有的静态库文件

时间:2015-06-12 13:01:08

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

我有一个使用C编程语言的Eclipse项目。两天以来,我一直遇到与链接器错误有关的问题。我已经检查了各种论坛以找到解决方案。尝试了很多建议,但无法解决。所以作为最后的手段,我在这里问问题。我的主程序MotorRun.c具有调用静态库FtMscLib_Static_LIBCMT_Release.Lib中的函数的代码,该库位于路径Libs中的C:\FT-Project\Common\Libs文件夹中。我正在使用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程序非常简单,所以我不在这里发布。但如果有必要,我可以稍后更新。提前谢谢!

1 个答案:

答案 0 :(得分:2)

正确的链接器语法通常类似于:

-Lpath_to_library_directory -lname

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

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