【发布时间】:2016-10-09 18:31:12
【问题描述】:
很久以前,我将 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\5.7\msvc2015_64\include -ID: \Qt\5.7\msvc2015_64\include\QtGui -ID:\Qt\5.7\msvc2015_64\include\QtANGLE -ID:\Qt\5.7\msvc2015_64\include\QtSql -ID:\Qt\5.7\msvc2015_64\include\QtWebSockets - ID:\Qt\5.7\msvc2015_64\include\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.jom sqlite3.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): error C2449: found '{' at file scope (missing function header?)
所以在编译 sqlite3.c 时,它给了我大量来自 qt 库的错误,尽管事实上 sqlite3.c 不包含它们中的任何一个!!!
PS:我能想到的唯一改变我的计算机配置是在安装 VS 更新后更新到 MSVC 编译器工具链。
PPS:我的项目配置为使用 msvc2013 和 Qt 5.5。出现错误后,我尝试使用 msvc2015 & Qt 5.7,但问题仍然存在。
【问题讨论】:
-
您是否使用
extern关键字将 sqlite.c 包含到您的项目中。 -
不,我将 sqlite3.c 添加到 qmake 文件中的 SOURCES 并在其他文件中包含 sqlite3.h