c++ - qmake项目编译sqlite出错

标签 c++ qt sqlite qmake

很久以前,我将 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_NETWORK_LIB -DQT_I.CORE3d -I._LIB -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): error C2143: 语法错误:'*' 前缺少'{'

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

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

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

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

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

PPS:我的项目配置为使用 msvc2013 和 Qt 5.5。错误后我尝试使用 msvc2015 & Qt 5.7 但问题仍然存在。

最佳答案

我可以确定发生的是include的“交叉”。

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

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

关于c++ - qmake项目编译sqlite出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37720287/

相关文章:

c - C/C++ 中的 SQLite。 sqlite3_exec : parameter set in callback function is pointing to an empty string

c++ - 重新抛出指针捕获的异常

c++ - 国际象棋游戏数学网格的二维索引

c++ - 2个窗口QT之间的SIGNAL和SLOT

javascript - 以增量方式显示 SQLite 数据库中的数据

android - 使用EditText完成后是否更新数据库中的值?

c++ - 在turbo c++中将字符串的一部分转换为整数

c++ - std::cout 中的 'operator<<' 不匹配

c++ - Qt 双击检查鼠标左键

c++ - 从另一个线程发出信号是否安全?