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

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

本文关键字:文件 db 读取 数据 中的 lib 编译器 存储 c++      更新时间:2023-10-16

我对c#有很好的理解。我被要求与我们的程序一起制作SDK,以便客户可以使用我们的函数制作自己的UI。在c#中,我通过添加DLL实现了这一点。我不得不使用一个数据库文件(.db)来保存命令,而且它运行得很成功。现在我被要求在c++中做同样的事情。我对c++还是个新手。但这是我从MSDN上读到并做的:

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

到目前为止,一切顺利。现在,当我尝试使用这个库文件和头文件时,我在构建时得到以下错误:

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中问了这个问题,并得到了答案(在c++项目中包含数据库文件时出错)。

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

现在我有三个问题:

    我说的对吗?编译器是否试图读取存储在.lib文件中的.db文件?
  1. 如果有,谁能给点建议吗
  2. 还有,如果你认为我错了,我会感谢任何其他的解释。

我使用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和包括数据库名称作为数据库。BHJBKHJ(其中BHJBKHJ是你写的随机扩展)。Sqlite在识别数据库方面做得非常好。

就是这样。问题无法解决。但有两种选择