gpt4 book ai didi

sqlite - 使用 CLion 和 CMAKE 的 sqlite3 函数的 C/C++ 未定义引用

转载 作者:行者123 更新时间:2023-12-05 01:19:08 29 4
gpt4 key购买 nike

CMAKE 的文件有这样的代码:

cmake_minimum_required(VERSION 3.6) 
project(HelloSqliteC)

set(CMAKE_CXX_STANDARD 11)

set(SOURCE_FILES main.c)
add_executable(HelloSqliteC ${SOURCE_FILES})

文件 main.c 有这段代码:

#include <stdio.h>
#include <stdlib.h>
#include <sqlite3.h>

int main() {
sqlite3 *db;
int rc;

rc = sqlite3_open("database.db", &db);

if (rc) {
fprintf(stderr, "Can't open database: %s!\n", sqlite3_errmsg(db));
} else {
fprintf(stderr, "Opened database successfully!\n");
}

sqlite3_close(db);
return 0;
}

当我尝试编译时:

/home/marcus/ide/clion/clion-2016.3.1/bin/cmake/bin/cmake --build      /home/marcus/projects/native/HelloSqliteC/cmake-build-debug --target   HelloSqliteC -- -j 4
[ 50%] Building C object CMakeFiles/HelloSqliteC.dir/main.c.o
[100%] Linking C executable HelloSqliteC
CMakeFiles/HelloSqliteC.dir/main.c.o: In function `main':
/home/marcus/projects/native/HelloSqliteC/main.c:13: undefined reference to `sqlite3_open'
/home/marcus/projects/native/HelloSqliteC/main.c:16: undefined reference to `sqlite3_errmsg'
/home/marcus/projects/native/HelloSqliteC/main.c:21: undefined reference to `sqlite3_close'
collect2: error: ld returned 1 exit status
CMakeFiles/HelloSqliteC.dir/build.make:94: recipe for target 'HelloSqliteC' failed
make[3]: *** [HelloSqliteC] Error 1
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/HelloSqliteC.dir/all' failed
make[2]: *** [CMakeFiles/HelloSqliteC.dir/all] Error 2
CMakeFiles/Makefile2:79: recipe for target 'CMakeFiles/HelloSqliteC.dir/rule' failed
make[1]: *** [CMakeFiles/HelloSqliteC.dir/rule] Error 2
Makefile:118: recipe for target 'HelloSqliteC' failed
make: *** [HelloSqliteC] Error 2

我尝试用不同的方法解决这个问题,但没有成功。我使用的是 CLion C/C++,我的操作系统是 Ubuntu 16.04,我使用 autoconf 安装 sqlite3。

为了测试,我使用了上面的 main.c 并使用 GCC 在命令行中使用“-l sqlite3”进行了编译,我成功了,但我想使用 CLion。

帮帮我,谢谢。

最佳答案

我还使用 CLion C/C++。操作系统是Ubuntu 18.04。但我想编译 main.cppCMakelist.txt 是:

cmake_minimum_required(VERSION 3.13)
project(ProjectName)

set(CMAKE_CXX_STANDARD 14)
add_executable(student main.cpp)
target_link_libraries(ProjectName LINK_PUBLIC sqlite3)

它运行成功。

关于sqlite - 使用 CLion 和 CMAKE 的 sqlite3 函数的 C/C++ 未定义引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41268589/

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