在 VS2010 上使用 SQLite3 构建问题

Build problems with SQLite3 on VS2010

我尝试使用 VS2010 从源代码构建 SQLite v3,运行 遇到我不知道如何解决的问题。

这是我拥有的: VS2010专业版。 使用 sqlite-amalgamation-3160100.zip 微软文章:SQLite databases

这就是我所做的:

  1. 创建了一个 C++ 'Win32 Console application'。
  2. 已禁用预编译 headers。
  3. 添加预处理器定义:(不要这样做,这就是问题所在!) _HAVE_SQLITE_CONFIG_H;SQLITE_OS_WINRT;SQLITE_API=__declspec(dllexport); (由 'SQLite databases' 第 3 节指定。)
  4. 已创建 config.h(暂时为空。)
  5. 在项目中包含了来自 sqlite-amalgamation-3160100.zip 的源文件。
  6. 构建。

我遇到了一些编译器错误

1>  sqlite3.c
1>e:\andre\ontwikkeling\sqlite\sqlite-amalgamation-3160100\sqlite3.c(38515): error C2065: 'MapViewOfFileFromApp' : undeclared identifier
1>e:\andre\ontwikkeling\sqlite\sqlite-amalgamation-3160100\sqlite3.c(38515): error C2099: initializer is not a constant
1>e:\andre\ontwikkeling\sqlite\sqlite-amalgamation-3160100\sqlite3.c(38524): error C2065: 'CreateFile2' : undeclared identifier
....

...我试图解决这个问题。

第一个引导我截取以下代码:

#if SQLITE_OS_WINRT && (!defined(SQLITE_OMIT_WAL) || SQLITE_MAX_MMAP_SIZE>0)
  { "MapViewOfFileFromApp",    (SYSCALL)MapViewOfFileFromApp,    0 },
#else
  { "MapViewOfFileFromApp",    (SYSCALL)0,                       0 },
#endif

现在 'MapViewOfFileFromApp' 导致 MapViewOfFileFromApp function、'Maps a view of a file mapping into the address space of a calling Windows Store app.',一个有效的 Microsoft 调用,我的项目设置缺少正确的配置。

我可以找到解决此问题的方法,但其他错误仅取决于 SQLITE_OS_WINRT,因此无法解决。

我似乎缺少一些配置选项,但我不知道是哪些。我阅读了所有文档 compile time options 但无法找出我做错了什么。

我试图找到一个 VS2010 解决方案的工作示例,但一无所获。因为我在这里检查了类似的问题! (如果有一个覆盖这个那么我错过了,抱歉。)

有人对我缺少的东西有什么建议吗?我运行想不通了。

* 编辑 2017 年 1 月 6 日 *

根据 MaxFurry 的建议,我遵循了 blog by David Cravey 的步骤,该步骤与我的步骤完全相同,但没有声明 SQLITE_OS_WINRT;SQLITE_API=__declspec(dllexport);。保留这两个定义解决了问题。

显然我误解了 Microsoft 文章中的建议。

编译时问题已解决。

亲切的问候。

您是否已经构建了 sqlite3.dll 文件?如果是这样,只需在 visual studio 文件夹中创建一个文件夹。当你想使用 sqlite3 时,只需将 dll 文件复制到 visual studio 中的项目文件夹中。你想使用它时,还可以将以下文件复制到 sqlit3.c、sqlite3.h 中。完成后在 visual studio IDE 中打开项目。右键单击项目名称,添加,添加现有的然后单击 sqlite3.h 和 sqlite3.c。让我知道进展如何。