在 VS2010 上使用 SQLite3 构建问题
Build problems with SQLite3 on VS2010
我尝试使用 VS2010 从源代码构建 SQLite v3,运行 遇到我不知道如何解决的问题。
这是我拥有的:
VS2010专业版。
使用 sqlite-amalgamation-3160100.zip
微软文章:SQLite databases
这就是我所做的:
- 创建了一个 C++ 'Win32 Console application'。
- 已禁用预编译 headers。
- 添加预处理器定义:(不要这样做,这就是问题所在!)
_HAVE_SQLITE_CONFIG_H;SQLITE_OS_WINRT;SQLITE_API=__declspec(dllexport);
(由 'SQLite databases' 第 3 节指定。)
- 已创建 config.h(暂时为空。)
- 在项目中包含了来自 sqlite-amalgamation-3160100.zip 的源文件。
- 构建。
我遇到了一些编译器错误
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。让我知道进展如何。
我尝试使用 VS2010 从源代码构建 SQLite v3,运行 遇到我不知道如何解决的问题。
这是我拥有的: VS2010专业版。 使用 sqlite-amalgamation-3160100.zip 微软文章:SQLite databases
这就是我所做的:
- 创建了一个 C++ 'Win32 Console application'。
- 已禁用预编译 headers。
- 添加预处理器定义:(不要这样做,这就是问题所在!) _HAVE_SQLITE_CONFIG_H;SQLITE_OS_WINRT;SQLITE_API=__declspec(dllexport); (由 'SQLite databases' 第 3 节指定。)
- 已创建 config.h(暂时为空。)
- 在项目中包含了来自 sqlite-amalgamation-3160100.zip 的源文件。
- 构建。
我遇到了一些编译器错误
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。让我知道进展如何。