【问题标题】:Build problems with SQLite3 on VS2010在 VS2010 上使用 SQLite3 构建问题
【发布时间】:2017-01-05 13:58:22
【问题描述】:

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

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

这就是我所做的:

  1. 创建了一个 C++“Win32 控制台应用程序”。
  2. 禁用预编译头文件。
  3. 添加了预处理器定义:(不要这样做,这是问题所在!) _HAVE_SQLITE_CONFIG_H;SQLITE_OS_WINRT;SQLITE_API=__declspec(dllexport); (由“SQLite 数据库”第 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,“将文件映射视图映射到调用 Windows 应用商店应用程序的地址空间。”这是一个有效的 Microsoft 调用,我的项目设置缺少正确的配置。

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

看起来我缺少一些配置选项,但我不知道是哪些。我阅读了所有记录在案的compile time options,但找不到我做错了什么。

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

有人对我缺少的东西有什么建议吗?我的想法不多了。

* 2017 年 1 月 6 日编辑 *

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

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

编译时问题已解决。

亲切的问候。

【问题讨论】:

    标签: visual-studio-2010 sqlite


    【解决方案1】:

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

    【讨论】:

    • ???我只想从文件中构建 dll! (sqlite3.c + sqlite3.h)。你的回答对我来说没有意义。
    • 这是我遵循的确切步骤dcravey.wordpress.com/2011/03/21/…
    • 我没有使用 dll,我想从源文件中使用它(替代博客链接中的第 11 步,我跳过第 2 步到第 6 步)。我注意到这个博客没有提到 SQLITE_OS_WINRT;SQLITE_API=__declspec(dllexport); 的设置。如微软文章中所述。没有设置 SQLITE_OS_WINRT 解决了我的问题。
    猜你喜欢
    • 1970-01-01
    • 2017-12-22
    • 1970-01-01
    • 1970-01-01
    • 2013-09-03
    • 2019-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多