gpt4 book ai didi

c++ - 无法在 C 程序中链接 .a 库文件

转载 作者:行者123 更新时间:2023-11-28 05:04:08 27 4
gpt4 key购买 nike

我正在学习 Cmake 并在简单的 C 项目中添加库项目。我创建了一个具有以下结构的简单库项目。

MyLibraryProjectDirectory
|
-- library.C
-- library.h
-- UmerDir
|
-- Umer.h
-- Umer.c

Cmakelist.txt 正在生成我在另一个 C 程序中使用的 .a lib 文件。

C 程序 的结构如下:

MyCProgram
|
-- main.c
-- libuntitled.a

libuntitled.a是我的库项目中CmakeList.txt生成的库文件。

问题是当我尝试使用 .a 文件构建 C 项目时,它会抛出以下内容

错误:

"C:\Program Files\JetBrains\CLion 2017.2\bin\cmake\bin\cmake.exe" --build C:\Users\Lenovo\CLionProjects\AppProject\cmake-build-debug --target AppProject -- -j 2
[ 50%] Linking C executable AppProject.exe
C:/mingw-w64/i686-7.1.0-posix-dwarf-rt_v5-rev0/mingw32/bin/../lib/gcc/i686-w64-mingw32/7.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -llibuntitled
collect2.exe: error: ld returned 1 exit status
mingw32-make.exe[3]: *** [AppProject.exe] Error 1
CMakeFiles\AppProject.dir\build.make:95: recipe for target 'AppProject.exe' failed
mingw32-make.exe[2]: *** [CMakeFiles/AppProject.dir/all] Error 2
CMakeFiles\Makefile2:66: recipe for target 'CMakeFiles/AppProject.dir/all' failed
mingw32-make.exe[1]: *** [CMakeFiles/AppProject.dir/rule] Error 2
CMakeFiles\Makefile2:78: recipe for target 'CMakeFiles/AppProject.dir/rule' failed
mingw32-make.exe: *** [AppProject] Error 2
Makefile:117: recipe for target 'AppProject' failed

我不确定我做错了什么,所以请原谅我对 CMake 和 C 构建系统的了解极其有限。

为方便起见,我还附上了 C 程序和 C 库项目的屏幕截图。

库项目截图:

enter image description here enter image description here enter image description here enter image description here

C 程序项目:

enter image description here enter image description here

编辑:

我通过在库名称前添加 ${CMAKE_SOURCE_DIR} 修复了库未找到的问题。显然,即使在同一目录中,Cmake 也需要完整的分类路径来定位 .a 文件,这有点奇怪。无论如何,现在我收到以下错误:

错误:

"C:\Program Files\JetBrains\CLion 2017.2\bin\cmake\bin\cmake.exe" --build C:\Users\Lenovo\CLionProjects\AppProject\cmake-build-debug --target AppProject -- -j 2
CMakeFiles\Makefile2:66: recipe for target 'CMakeFiles/AppProject.dir/all' failed
mingw32-make.exe[3]: *** No rule to make target '../libuntitled', needed by 'AppProject.exe'. Stop.
CMakeFiles\Makefile2:78: recipe for target 'CMakeFiles/AppProject.dir/rule' failed
mingw32-make.exe[2]: *** [CMakeFiles/AppProject.dir/all] Error 2
Makefile:117: recipe for target 'AppProject' failed
mingw32-make.exe[1]: *** [CMakeFiles/AppProject.dir/rule] Error 2
mingw32-make.exe: *** [AppProject] Error 2

mingw32-make.exe 3 : 没有规则使目标 '../libuntitled' 成为 'AppProject.exe' 所需要的。停止。

最佳答案

除此之外,我不会在第一个 CMake-Project 中创建库并在第二个中手动链接它。可能这会对您有所帮助:How do I tell CMake to link in a static library in the source directory?

但是您应该(如果可能的话)寻找一种方法来创建带有子项目的单个 CMake 项目。这里有一个很好的解释的链接:http://techminded.net/blog/modular-c-projects-with-cmake.html

关于c++ - 无法在 C 程序中链接 .a 库文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45236207/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com