VS 2017 C ++-“无法打开源文件'sqlite3.h'”

时间:2018-07-19 12:00:49

标签: c++ sqlite visual-c++ visual-studio-2017

我开始学习如何使用Sqlite和构建数据库,但是我希望能够在C ++中使用这些数据库。每当我启动时,我都无法完成任何事情,因为Visual Studio会给我标题中的错误。当我尝试:

 #include <sqlite3.h>

我尝试将所有代码从sqlite的合并中移到我的项目文件中,但仍然无法正常工作。我尝试使用:

"sqlite3.h"

代替

<sqlite3.h>

我还添加了'amalgamation'文件夹作为目录,该目录可以消除第一个错误,但是在构建时出现链接器错误。

我感觉好像错过了设置中不允许我继续执行的操作,但是我已经搜索了所有可以想象的内容,但没有找到答案。任何帮助将不胜感激。谢谢。

更新:我在CLR项目中,因为我需要将GUI附加到此数据库,并且无法从合并中编译.c文件。这些文件似乎是我的问题的解决方案,因此,有什么办法可以解决C文件无法在CLR项目中编译的问题?

1 个答案:

答案 0 :(得分:0)

以下方法演示了如何与sqlite3.dll链接。

下载以下文件夹并将其复制到Visual C ++解决方案文件夹。
https://github.com/mcychan/DNAssist/tree/master/sqlite3

sqlite3文件夹包含x86和x64版本的sqlite dll和lib。 您可以升级到最新版本的sqlite.dll。

下载以下文件并将其复制到Visual C ++项目文件夹,为它们添加引用。
https://github.com/mcychan/DNAssist/blob/master/DNAssist/CppSQLite3.cpp
https://github.com/mcychan/DNAssist/blob/master/DNAssist/CppSQLite3.h

以下是查询数据库的示例代码。

#include "CppSQLite3.h"
#include <iostream>
#include <string>

using namespace std;

CppSQLite3DB db;

bool GetDatabase(const string& dbPath)
{
    try {
        db.open(dbPath.c_str());
        return true;
    }
    catch (CppSQLite3Exception& e)
    {
        cout << _T("Cannot open database: ") << dbPath << _T("\n");
        return false;
    }
}

void IssueQuery(const string& querystring, const string& field1)
{
    try {
        CppSQLite3Query q = db.execQuery(querystring.c_str());
        while (!q.eof()) {
            CString temp2(q.fieldValue(field1.c_str()));
            TRACE(temp2 + _T("\n"));
            q.nextRow();
        }
    }
    catch (CppSQLite3Exception& e)
    {
        cout << _T("Cannot execute query: ") << querystring << _T("\n");
    }
}

void main()
{
    if(GetDatabase("C:\\test.sqlite"))
        IssueQuery("SELECT * FROM DUAL", "X");
}