c++ - 无法在Windows上使用mingw将sqlite3与c连接

标签 c++ c sqlite mingw

我想使用 sqlite3 作为我的 C++ 的数据库接口(interface),所以我决定从本教程开始:https://www.tutorialspoint.com/sqlite/sqlite_c_cpp.htm

我已经在计算机上安装了 sqlite3 并为其添加了环境变量,但是当我尝试按照教程建议的方式编译一个非常简单的程序时,输入

gcc test.c -l sqlite3

在命令提示符下,我收到以下错误:

   test.c:2:10: fatal error: sqlite3.h: No such file or directory
    2 | #include <sqlite3.h>
      |          ^~~~~~~~~~~
compilation terminated.

test.c 文件是我桌面上的一个文件夹。该文件夹具有以下结构:

test.c
shell.c
sqlite3.c
sqlite3.h
sqlite3ext.h

最后四个文件来 self 在https://www.sqlite.org/download.html上找到的合并zip。 (sqlite-amalgamation-3320300.zip)

我几个小时以来一直在寻找问题所在,我能找到的唯一可能的解释是编译器无法链接外部 sqlite3 库,但即使这样我也找不到有效的链接方法,关于如何进行的任何想法我可以编译上面的内容吗?

测试.c

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

int main(int argc, char* argv[]) {
   sqlite3 *db;
   char *zErrMsg = 0;
   int rc;

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

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

感谢您提前提供的任何帮助。

编辑:

如果我输入 #include "sqlite3.h"而不是 #include 我会收到不同的错误:

c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe:找不到-lsqlite3collect2.exe : 错误:ld 返回 1 退出状态

最佳答案

gcc test.c -l sqlite3

您正在尝试链接到您没有的 libsqlite3.a 文件。

根据评论,您确实拥有合并文件sqlite.c。相关文档位于:https://www.sqlite.org/amalgamation.html

使用它的一种简单方法是您可以使用可执行文件构建它,如下所示:

gcc test.c sqlite3.c -o myexecutable

关于c++ - 无法在Windows上使用mingw将sqlite3与c连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62800598/

相关文章:

c - 分配数组后,我如何知道数组中有多少个插槽?

c++ - malloc 没有按我的预期工作

c - 如何在 C 中创建用户定义的结构数组

c++ - _mm_crc32 给出与手动版本不同的结果

c - (类型转换为常量文字)为什么 C 程序的输出

Android/SQLite - 跨多列的不同计数

sql - 使零出现在升序数字列表的最后

sqlite - 我在哪里可以找到 SQLite 数据库文件的示例或它的转储?

c++ - C++11 中的 'typedef' 和 'using' 有什么区别?

c++ - 内联函数的代码大小不会增加