我今天的问题是使用Qt 5.1.0和MinGW从Windows上的命令行编译QT应用程序。我的Qt安装位于C:\Qt\Qt5.1.0-MinGW
。
它在Qt Creator中编译得很好,但是从命令行开始它似乎不包含来自C:\Qt\Qt5.1.0-MinGW\Tools\mingw48_32\i686-w64-mingw32\include
的标题,我在我的一些代码中#include
。
例如,我{C}文件中的#include <Ws2tcpip.h>
C:\Qt\Qt5.1.0-MinGW\Tools\mingw48_32\i686-w64-mingw32\include
,然后我使用getaddrinfo
中声明的函数Ws2tcpip.h
这在Qt Creator中编译得很好,但是从命令行编译我得error: 'getaddrinfo' was not declared in this scope
。
这只是一个例子,我还有其他一些例子,在编译命令行时,似乎没有定义驻留在i686-w64-mingw32/include
文件夹中的头文件中定义的内容。
为什么它会在Qt Creator和命令行之间进行任何不同的编译,我该如何解决这个问题?
答案 0 :(得分:0)
锁定您没有正确设置环境。只需在QtCreator(构建环境)中查看您的项目工具包设置作为参考。
答案 1 :(得分:0)
我将C:/Qt/Qt5.1.0-MinGW/5.1.0/mingw48_32/bin;C:/Qt/Qt5.1.0-MinGW/Tools/mingw48_32/bin
添加到PATH
环境变量的开头。
(后来我意识到调用C:/Qt/Qt5.1.0-MinGW/5.1.0/mingw48_32/bin/qtenv2.bat
就是这样做的。我当时根本不知道这个脚本。)
此外,我在-r -spec win32-g++
之前的qmake
命令中添加了mingw32-make
。