在qmake项目中编译sqlite时出错

Error compiling sqlite in qmake project

本文关键字:sqlite 出错 编译 qmake 项目      更新时间:2023-10-16

很久以前,我将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-DUNICODE=1-DNOMINMAX-DUSE_MATH_DEFINES-DSCL_SECURE_NO_WARNINGS-DPROTOBUF_USE_DLLS-DB3D_DEBUG-DQT_GUI_LIB-DQT_SQL_LIB-DDQT_WEBSOCKET S_LIB-DQT_NETWORK_LB-DQT_CORE_LIB-I。。\Builder3d-I-I..\libs\c3d\v98099\Win64_Visal_Studio_2013_Unicode\Include-I。。\libs-I。。\libs\protobuf\cmake\build\debug\include-ID:\Qt\5.7\msvc2015_64\include\QtGui-ID:\ Qt\5.7 \msvc2015._64\include\QtANGLE-ID:\Q t\5.7 \ msvc2015_64\include \QtSql-ID:\ Q t\5.7\ msvc2015.64\includ\QtWebSockets-ID:\ Qt\ 5.7 \msvc2015_64\ includ\ QtNetwork-ID:\ Qt\5.7 \msvc2015_64 \include\QtCore-Idebug-ID:\Qt\5.7\msvc2015_64\mkspecs\win32-msvc2015-Fodebug@C: \Users\Rem\AppData\Local\Temp\sqlite3.obj.20112.0.jomsqlite3.c

D:\Qt\5.7\msvc2015_64\include\QtCore/qnamespace.h(53):错误C2143:语法错误:在"*"之前缺少"{">

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

D:\Qt\5.7\msvc2015_64\include\QtCore/qnamespace.h(68):错误C2059:语法错误:";">

D:\Qt\5.7\msvc2015_64\include\QtCore/qnamespace.h(68):错误C2449:在文件作用域找到"{"(缺少函数头?)

因此,当编译sqlite3.c时,它会从qt库中给我带来大量错误,尽管sqlite3.c中没有任何错误!!!

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

PPS:我的项目被配置为使用msvc2013&问题5.5。错误发生后,我尝试使用msvc2015&问题5.7,但问题依然存在。

我可以肯定发生的是includes的"交叉"。

从您列出的内容来看,sqlite3.c的编译使用了大量的"-Ipath_to_qt",因此传播了qt头的include路径。

然后,例如,sqlite3.c包含config.h来读取sqlite应该如何配置的选项。当然还有另一个config.h来自某个qt-include文件夹,这个config.h为qt带来了引用/子包含。