C ++编译器从存储在.lib中的.db文件中读取数据

时间:2015-06-03 12:35:54

标签: c++ sqlite sdk .lib

我对C#有一个很好的理解。我被要求与我们的程序一起制作SDK,以便客户可以使用我们的功能制作自己的UI。在C#中,我通过添加DLL来完成此操作。我不得不使用数据库文件(.db)来保存命令,并且它成功了。现在我被要求在C ++中做同样的事情。我对C ++很陌生。但这是我从MSDN读到的内容并且做了:

  1. 我创建了一个图书馆项目。
  2. 将数据库添加为资源文件,sqlite3头文件和库文件(我在命令提示符下给出了lib命令)。
  3. 使用函数创建了一个头文件,并在.cpp文件中写入了所有函数定义。
  4. 构建它并从lib命令获取库文件。
  5. 到目前为止,这么好。现在,当我尝试使用此库文件和标题时,我在构建期间遇到以下错误。

    error C2059: syntax error : '<'
    error C2018: unknown character '0x7'
    error C2018: unknown character '0x60'
    error C2018: unknown character '0x7'
    error C2018: unknown character '0x2'
    error C2018: unknown character '0x1e'
    error C2018: unknown character '0x18'
    

    当我记得这些错误与我几天前的错误相同时,我一直在努力解决这个问题。我实际上在SE中问了这个问题并得到了答案(Error while including database file in C++ project)。

    所以我推断编译器正在尝试读取保存在库文件中的数据库文件,因此我收到了这些错误。

    现在我有三个问题:

    1. 我是对的吗?编译器是否尝试读取存储在.lib文件中的.db文件?
    2. 如果是的话,任何人都可以提出任何建议
    3. 另外,如果您认为我错了,我将不胜感激。
    4. 我正在使用Visual Express C ++ 2010.我使用Visual Studio附带的命令提示符来创建.lib文件。我创建.lib文件的参考是https://msdn.microsoft.com/en-us/library/ms235627.aspx#BKMK_CreateAppToRefTheLib

1 个答案:

答案 0 :(得分:1)

数据库文件无法存储在要部署的静态库文件中。因为编译器总是通读库的内容。它显示了它在构建程序时读取它。

那么如果您必须使用SDK发布数据库该怎么办?我有两个解决方案:

  1. 使用.lib文件和.h文件添加数据库文件,然后使用SDK提供命令词汇表。 (但我不建议这样做)
  2. 使用sqlite3函数更改数据库文件的扩展名并在.lib文件调用数据库中编写方法。为用户提供您使用屏蔽功能名称编写的功能词汇表,以便他们不知道正在播放的数据库文件。数据库文件不需要.db扩展名,以便sqlite识别它。只需提供sqlite_open并将数据库名称包含为database.bhjbkhj(其中bhjbkhj是您编写的随机扩展名)。在识别数据库方面,Sqlite在这方面非常出色。
  3. 所以你去吧。问题无法解决。但有两种选择。