c++编译器从存储在.lib中的.db文件中读取数据
C++ compiler reading data from .db file stored in .lib
我对c#有很好的理解。我被要求与我们的程序一起制作SDK,以便客户可以使用我们的函数制作自己的UI。在c#中,我通过添加DLL实现了这一点。我不得不使用一个数据库文件(.db)来保存命令,而且它运行得很成功。现在我被要求在c++中做同样的事情。我对c++还是个新手。但这是我从MSDN上读到并做的:
- 我创建了一个库项目。
- 添加数据库作为资源文件,sqlite3头文件和库文件(我从命令提示符上给出lib命令得到)。
- 创建一个包含函数的头文件,并在一个.cpp文件中写入所有函数的定义。
- 构建它并从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文件?
- 如果有,谁能给点建议吗
- 还有,如果你认为我错了,我会感谢任何其他的解释。
我使用Visual Express c++ 2010。我使用Visual Studio自带的命令提示符来创建.lib文件。我创建.lib文件的参考是https://msdn.microsoft.com/en-us/library/ms235627.aspx#BKMK_CreateAppToRefTheLib.
数据库文件不能存储在待部署的静态库文件中。因为编译器总是读取库的内容。它表明当你在构建程序的时候它正在读取这个。
那么,如果您必须与SDK一起发布数据库该怎么办呢?我有两个解决方案:
- 添加数据库文件与你的。lib文件和。h文件,只是简单地给出一个SDK命令的术语表。(但我不建议这样做)
- 更改数据库文件的扩展名,并在.lib文件中使用sqlite3函数调用数据库。给用户一个你写的函数的词汇表,用函数名掩盖,这样他们就不知道这是一个数据库文件。数据库文件不需要有.db扩展名,以便sqlite识别它。只是给sqlite_open和包括数据库名称作为数据库。BHJBKHJ(其中BHJBKHJ是你写的随机扩展)。Sqlite在识别数据库方面做得非常好。
就是这样。问题无法解决。但有两种选择
相关文章:
- .cpp和.h文件中的模板专用化声明
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- 文本文件中的单词链表
- CMake-按正确顺序将项目与C运行时对象文件链接
- 使用新行和不使用新行读取文件
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 挂起和取消挂起一个文件DLL
- 如何确定我已使用非编码文件到达 EOF?
- 命名空间中具有.h和.cpp文件的类
- 如何使用ndk-build.cmd构建Android.so文件
- 从包含m行的文件中提取n行,必要时(惰性地)重复该文件
- 读取文件并输入到矢量中
- 在C++中查找文件
- c++库的公共头文件中应该包含什么
- 用c++从输入文件中读取另一行
- 无法创建或打开 *.VS 2015 中的 VC.db 文件(桌面快速版)更新 3RC
- 无法在资产文件夹中创建.db文件
- 为文件下载锁定sqlite3 db
- sqlite C c++库保持DB文件作为内存映射文件吗?是否有可能做到这一点
- c++编译器从存储在.lib中的.db文件中读取数据