qmake项目编译sqlite出错

Error compiling sqlite in qmake project

很久以前,我将 sqlite3.c 文件添加到我的 qmake 项目中,并使用 msvc-2013 和 gcc-5.2 64 位编译器成功编译了该项目几个月。

然而,当我最近尝试重新编译这个项目时,它成功编译了所有文件,但 sqlite3.c 文件!!!它给了我奇怪的错误信息:

cl -c -nologo -Zc:wchar_t -FS -Zc:strictStrings -Zi -MDd -W3 -w44456 -w44457 -w44458 /Fddebug\Builder3d.pdb - DUNICODE -DWIN32 -DWIN64 -DVL_PLATFORM_WINDOWS=1 -DVL_OPENGL=1 -D_UNICODE=1 -DNOMINMAX -D_USE_MATH_DEFINES -D_SCL_SECURE_NO_WARNINGS -DPROTOBUF_USE_DLLS -DB3D_DEBUG -DQT_GUI_LIB -DQT_SQL_LIB -DQT_WEBSOCKETS_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -I..\Builder3d -I. -I..\libs\c3d\v98099\Win64_Visual_Studio_2013_Unicode\Include -I..\libs -I..\libs\protobuf\cmake\build\debug\include -ID:\Qt.7\msvc2015_64\include -ID:\Qt.7\msvc2015_64\include\QtGui -ID:\Qt.7\msvc2015_64\include\QtANGLE -ID:\Qt.7\msvc2015_64\include\QtSql -ID:\Qt.7\msvc2015_64\include \QtWebSockets -ID:\Qt.7\msvc2015_64\include\QtNetwork -ID:\Qt.7\msvc2015_64\include\QtCore -Idebug -ID:\Qt.7\msvc2015_64\mkspecs\win32-msvc2015 -Fodebug\ @C:\Users\Rem\AppData\Local\Temp\sqlite3.obj.20112.0.jom sqlite3.c

D:\Qt.7\msvc2015_64\include\QtCore/qnamespace.h(53): 错误 C2143: 语法错误: 在 '*'[ 之前缺少 '{' =36=]

D:\Qt.7\msvc2015_64\include\QtCore/qnamespace.h(68): error C2061: 语法错误: 标识符 'Qt'

D:\Qt.7\msvc2015_64\include\QtCore/qnamespace.h(68): error C2059: 语法错误: ';'

D:\Qt.7\msvc2015_64\include\QtCore/qnamespace.h(68):错误 C2449:在文件范围内找到“{”(缺少函数头? )

所以在编译 sqlite3.c 时它给了我大量来自 qt 库的错误,尽管 sqlite3.c 不包含任何错误!!!

PS:我能想到的我的计算机配置的唯一变化是安装 VS 更新后更新到 MSVC 编译器工具链。

PPS: 我的项目配置为使用 msvc2013 和 Qt 5.5。报错后我尝试使用msvc2015 & Qt 5.7 但是问题依旧。

我可以确定发生的是包含的 "crossing"。

根据您列出的内容,sqlite3.c 的编译发生了很多“-Ipath_to_qt”,因此传播了到 qt headers 的包含路径。

然后,例如,sqlite3.c 包含 config.h 以读取应如何配置 sqlite 的选项。当然还有另一个 config.h 来自某个 qt include 文件夹,这个 config.h 将 references/subincludes 带到 qt。