c++ - 使用 sqlite3 设置 C++ 代码示例不起作用
问题描述
我尝试在基本的 c++ 应用程序中设置 sqlite3 扩展。我知道这个网站上仍有线程,但我已经尝试了所有关于这个问题的建议。我无法继续前进,没有什么是正确的解决方案。我想编译 SQLConnector.cpp 类(参见下面的文件夹结构)。
我无法在没有错误的情况下编译应用程序。
我已经尝试过的:
我已经在以下位置安装了 sqlite3:
C:\sqlite3\
我已经下载了 sqlite-amalgamation 并创建了一个具有以下结构的文件夹:
sqlite_test
├── SQLConnector.cpp
├── shell.c
├── sqlite3.c
├── sqlite3.h
└── sqlite3ext.h
我使用此命令编译代码,但它不起作用:
g++ SQLConnector.cpp - l sqlite3
这是基本代码片段的源代码:
#include "sqlite3.h"
#include "sqlite3ext.h" // I have tried it also without this file.
#include <iostream>
int main()
{
sqlite3 *db;
char *strErrorMsg = 0;
int rc;
rc = sqlite3_open("test.db", &db);
if (rc)
{
std::cout << "Can't open database " << sqlite3_errmsg(db) <<
std::endl;
return 1;
}
std::cout << "Opened database successfully!" << std::endl;
sqlite3_close(db);
return 0;
}
这是错误,我得到:
SQLConnector.cpp: In Funktion »int main()«:
sqlite3ext.h:426:40: Fehler: »sqlite3_api« wurde in diesem
Gültigkeitsbereich nicht definiert
#define sqlite3_open sqlite3_api->open
^
SQLConnector.cpp:20:10: Anmerkung: bei Substitution des Makros
»sqlite3_open«
rc = sqlite3_open("test.db", &db);
^~~~~~~~~~~~
sqlite3ext.h:426:40: Anmerkung: empfohlene Alternative: »sqlite3_log«
#define sqlite3_open sqlite3_api->open
^
SQLConnector.cpp:20:10: Anmerkung: bei Substitution des Makros
»sqlite3_open«
rc = sqlite3_open("test.db", &db);
我不知道应该将哪个路径插入 -l 选项。如果我删除 -l 选项并编译 sqlite3.c,那么我会收到超过 300 个错误:-D
我能做些什么?我不明白如何设置扩展可能?有人可以帮我看看他的设置吗?
我使用 VSCode,但我在 shell 上手动编译。
解决方案
将宏“SQLITE_EXTENSION_INIT1”单独放在一行之后#include <sqlite3ext.h>
。
也<sqlite3.h>
包含在<sqlite3ext.h>
.
推荐阅读
- laravel - 分类 slug + post slug Laravel Eloquent
- reactjs - 如何在 _app.js 组件 nextjs 上使用数据获取方法
- reactjs - 如何在浏览器上运行反应?
- sql - 将聚集索引添加到当前正在使用的 SQL Server 的影响
- vue.js - Vuejs 3 在组件中单击更改数据
- javascript - ReactJS:全局 Okta 身份验证辅助函数
- python - 为什么我的 python 脚本在 IDLE 和从 CMD 执行而不是双击时工作
- pkcs#11 - 如何使用 IAIK 包装器 1.6.2 读取数据对象
- jenkins - Jenkinsfile 调用外部批处理来移动有问题的 jmeter 测试结果
- github - 如何在不删除完整存储库的情况下删除 bitbucket 存储库的内容?