我正在尝试使用 Visual Studio 2015 编译从 SQLite 网站下载的 sqlite3.c 和 shell.c 的源代码。我创建了 DLL 项目 sqlite3 并将 sqlite3.c 源代码放入其中。然后我创建了项目 sqlite3shell 并将 shell.c 源放入其中。我在两者中添加了 include "stdafx.h"
。当我编译这两个项目时,DLL没有生成.lib文件,因此sqlite3shell的编译出现错误LNK1104无法打开sqlite3.lib
。
我使用 this solution 手动创建了一个 .lib 文件。然后sqlite3shell程序编译成功。但是当我去运行该程序时,我收到错误应用程序无法正确启动(0xc000007b)。
调查此错误似乎是由于尝试访问 64来自 32 位程序的 - 位程序。但一切都是使用 x86 配置创建的。
是否有某种方法可以让 DLL 编译生成正确的 .lib 文件?或者,如果这不能解决问题,我可以采取措施来防止 0xc000007b 错误吗?
最佳答案
如果其他人遇到这个问题,我已经找到了解决方案。有 2 行指定了 SQLITE_API 的定义。我将导出添加到定义中,如下所示:#define SQLITE_API __declspec(dllexport)。显然没有导出,因此这就是从未创建 .lib 文件的原因。通过更改,创建了 .lib 和 .exp 文件,然后程序没有收到 0c000007b 错误。
关于c - 无法使用 Visual Studio 2015 编译或运行 sqlite3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43766297/