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

C++ compiler reading data from .db file stored in .lib

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

  1. 我创建了一个库项目。
  2. 添加数据库作为资源文件、sqlite3 header 文件和库文件(我在命令提示符下输入 lib 命令)。
  3. 创建了一个包含函数的 header 文件,并将所有函数定义写入 .cpp 文件。
  4. 构建它并从 lib 命令获取库文件。

到目前为止,还不错。现在,当我尝试使用此库文件和 header 时,我在构建期间遇到了以下错误。

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 中问了这个问题并得到了答案 ()。

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

现在我有三个问题:

  1. 我说的对吗?编译器是否试图读取存储在 .lib 文件中的 .db 文件?
  2. 如果可以,请问大家有什么建议吗
  3. 此外,如果您认为我错了,我将不胜感激任何其他解释。

我正在使用 Visual Express C++ 2010。我使用 Visual Studio 附带的命令提示符来创建 .lib 文件。我创建 .lib 文件的参考是 https://msdn.microsoft.com/en-us/library/ms235627.aspx#BKMK_CreateAppToRefTheLib.

要部署的静态库文件中不能存放数据库文件。因为编译器总是通读库的内容。它表明它在您构建程序时正在读取它。

那么如果你的SDK要下发数据库怎么办?我有两个解决方案:

  1. 使用您的 .lib 文件和 .h 文件添加数据库文件,然后直接使用 SDK 提供命令词汇表。 (但是我不建议这样做)
  2. 更改数据库文件的扩展名,并在.lib文件中写入使用sqlite3函数调用数据库的方法。给用户一个你编写的函数的词汇表,函数名称被屏蔽,这样他们就不知道它是一个正在运行的数据库文件。数据库文件不需要 .db 扩展名,sqlite 就可以识别它。只需提供 sqlite_open 并将数据库名称包含为 database.bhjbkhj(其中 bhjbkhj 是您编写的随机扩展名)。 Sqlite 在这方面非常擅长识别数据库。

好了。问题无法解决。但是有两个选择。