C++ 使用PostgreSQL编译静态Qt 5.10.0时出错

C++ 使用PostgreSQL编译静态Qt 5.10.0时出错,c++,postgresql,qt,qt5,C++,Postgresql,Qt,Qt5,我正试图在Windows7上使用mingw用PostgreSQL 10(或9.2,但错误相同)编译Qt5.10.0 但是,当我包含psql include和lib dirs时,我总是在mingw32 make之后得到以下错误: g++ -c -fno-keep-inline-dllexport -O2 -std=c++1z -fno-exceptions -Wextra -Wall - W -Wvla -Wdate-time -DUNICODE -D_UNICODE -DWINVER=0x060

我正试图在Windows7上使用mingw用PostgreSQL 10(或9.2,但错误相同)编译Qt5.10.0

但是,当我包含psql include和lib dirs时,我总是在mingw32 make之后得到以下错误:

g++ -c -fno-keep-inline-dllexport -O2 -std=c++1z -fno-exceptions -Wextra -Wall -
W -Wvla -Wdate-time -DUNICODE -D_UNICODE -DWINVER=0x0601 -D_WIN32_WINNT=0x0601 -
DQT_MOC -DQT_NO_CAST_FROM_ASCII -DQT_NO_CAST_FROM_BYTEARRAY -DQT_NO_COMPRESS -DQ
T_NO_FOREACH -DQT_NO_NARROWING_CONVERSIONS_IN_CONNECT -DQT_USE_QSTRINGBUILDER -D
QT_NO_EXCEPTIONS -DQT_NO_DEBUG -DQT_BOOTSTRAP_LIB -DQT_VERSION_STR="\"5.10.0\""
-DQT_VERSION_MAJOR=5 -DQT_VERSION_MINOR=10 -DQT_VERSION_PATCH=0 -DQT_BOOTSTRAPPE
D -DQT_NO_CAST_TO_ASCII -I. -I. -I..\..\..\include -I..\..\..\include\QtCore -I.
.\..\..\include\QtCore\5.10.0 -I..\..\..\include\QtCore\5.10.0\QtCore -I..\..\..
\include\QtXml -I..\..\..\include\QtXml\5.10.0 -I..\..\..\include\QtXml\5.10.0\Q
tXml -IC:\POSTGRESQL\10\include -I..\..\..\mkspecs\win32-g++  -o .obj\release\m
oc.o moc.cpp
In file included from symbols.h:33:0,
                 from parser.h:32,
                 from moc.h:32,
                 from moc.cpp:30:
token.h:65:7: error: expected identifier before 'void'
     F(THIS) \
       ^
token.h:216:33: note: in definition of macro 'CREATE_ENUM_VALUE'
 #define CREATE_ENUM_VALUE(Name) Name,
                                 ^
 ...

token.h:263:1: error: expected declaration before '}' token
 };
 ^
Makefile.Release:314: recipe for target '.obj/release/moc.o' failed
我在谷歌上搜索并在qt论坛上发现了一个线程,其中有人出现了相同的错误,但没有解决方案:

我的configure命令如下所示:

configure -prefix C:\Qt\Static\5.10.0 -static -release -nomake tests -nomake   examples -confirm-license -I"C:\POSTGRESQL\10\include" -L"C:\POSTGRESQL\10\lib" -opensource -qt-zlib -qt-libpng -qt-libjpeg -sql-psql -opengl desktop
如果我删除,编译工作就可以了

-I"C:\POSTGRESQL\10\include"
-L"C:\POSTGRESQL\10\lib"
但显然没有psql


如果您有任何关于如何解决此问题的想法,我们将不胜感激。

您最近似乎还没有构建Qt(5.8版之后)-I和
-L
配置语法不再受支持

对于我来说,postgres刚刚开始工作,我所需要的只是
-sqlpsql
配置标志和我的系统路径中的库

如果仅此一点不起作用,您可以通过添加以下配置标志来指定路径:

PSQL_INCDIR=C:\POSTGRESQL\10\include
PSQL_LIBDIR=C:\POSTGRESQL\10\lib

事实上,我想这已经有一段时间了。谢谢PSQL_INCDIR和PSQL_LIBDIR成功了。看来我已经老了:)算你自己幸运吧,因为你能及时得到一个明确的答案,我花了几个星期的时间来研究这些东西。