SQLite的编译器错误

问题描述:

当包括“sqlite3.c”到我的项目,我得到很多编译器错误的:SQLite的编译器错误

error C2027: use of undefined type "_ht" d:\...\sqlite3.c line 19556 
... 
fatal error C1003: Errors in the program are too numerous to allow recovery. The compiler must terminate. 

当计有“sqlite3.c”到一个空的测试项目中,我没有问题。我比较了项目设置,两个项目之间没有太大的区别。

如何解决此问题?有没有人遇到同样的问题?

+0

有没有原因您不使用现有的[DLL](http://www.sqlite.org/download.html)? – 2010-05-30 15:31:48

+0

是的 - 我不想使用该DLL。包括“sqlite.c”而不是将它用作lib是一个常用选项,它在sqlite网站上有描述并且适用于测试项目。 – mspoerr 2010-05-30 15:41:46

它看起来像你没有包括它的所有头文件(或者你正试图将C构建为C++)。不要那样做。更好的是,将其构建到一个库中(或者使用别人的构建),并将该构建版本包含在您的项目中。

+0

是的,我将它包含在一个C++项目中。我的外部库是唯一的解决方案?谢谢 – mspoerr 2010-05-30 16:19:26

+0

建议使用合并源代码文件:所有项目(c和C++)中的“sqlite3.c”:http://www.sqlite.org/howtocompile.html – mspoerr 2010-05-30 16:36:21

+0

我现在构建了一个静态库并链接了这个lib到我的应用程序。它现在有效。感谢提示。 – mspoerr 2010-05-30 18:08:03

用鼠标右键单击项目中的sqlite3.c文件,然后选择Properties。去

C/C++ -> Advanced -> Compile As => "Compile as C Code (/TC)" 

这解决了这个问题。确保在所有配置和平台下进行设置。

我遇到了同样的问题。我正在创建一个插件,因此在sqlite中进行编译而不必分发额外的DLL是有益的,这比创建一个额外的项目来构建一个静态库要少。