c++ - SQLite 函数调用都有无效参数

标签 c++ eclipse sqlite invalid-argument

我正在尝试将 SQLite Amalgamation 添加到我的项目中。根据their page ,我“只需将合并复制到您的源目录中,然后将其与项目中的其他 C 代码文件一起编译。”我还在 sqlite3.h 中进行了复制,因此我可以访问 API。

但是,对 API 的任何函数调用,例如:

sqlite3 *db;
int rc;

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

导致以下错误:

Invalid arguments '
Candidates are:
int sqlite3_open(const char *, * *) '

DataSettings.cpp
/FCS/src
line 24
Semantic Error

我在这里做错了什么?我忽略了什么设置?

最佳答案

该问题具有名称修改不匹配的特点。因为 C++ 允许根据参数类型重载函数,所以 C++ 编译器必须将它们发出的函数名称“破坏”到目标代码中以对参数类型进行编码。 C 编译器不会这样做,也不希望对它们这样做。向 C++ 编译器指定函数具有“C”链接会禁用该函数名称的名称修改和重载;这就是 extern "C" 所做的。

尽管 C 在许多方面与 C++ 的一个子集相似,但两者是截然不同的语言。最好用 C 编译器编译 C 代码。因此,您的替代方案之一是将 sqlite 合并的 C 源代码与您的 C++ 代码分开构建到一个库中,然后将其与您的 C++ 目标文件链接以生成最终的可执行文件。

关于c++ - SQLite 函数调用都有无效参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27446107/

相关文章:

c++ - C/C++ 中简单快速的矩阵 vector 乘法

c++ - QCreator : how to create debug build configuration

java - Eclipse IDE 使用代理对处理表情符号

javascript - Eclipse:强制项目不显示 js 目录的错误

SQL查询三个表

c++ - 查找当前打开的文件句柄数(不是 lsof)

c++ - C/C++中的 "safe"和 "unsafe"代码是什么?

java - 在 Eclipse RCP saveAndRestore 中仅恢复少数 View

SQL:按升序选择N “most recent”行

android - 多列 ListView 显示零而不是数据库值