SQLite 函数调用都具有无效的参数



我正在尝试将SQLite合并添加到我的项目中。根据他们的页面,我"只需将合并复制到您的源目录中,并将其与项目中的其他 C 代码文件一起编译。我还复制了sqlite3.h,所以我可以访问API。

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

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

导致以下错误:

无效参数 '
候选人是:
int sqlite3_open(const char *, * *) '

数据设置.cpp
/FCS/src
24
号线 语义错误

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

该问题具有名称混淆不匹配的特征。 由于C++允许函数基于其参数类型重载,因此C++编译器必须将它们发出的函数名称"修改"到目标代码中,以便对参数类型进行编码。 C 编译器不会这样做,也不期望对它们这样做。 向C++编译器指定函数具有"C"链接将禁用该函数名称的名称重整和重载;这就是extern "C"所做的。

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

最新更新