Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 将qt5.2.1 linux交叉编译到windows_C++_Qt_Static_Cross Platform_Mingw W64 - Fatal编程技术网

C++ 将qt5.2.1 linux交叉编译到windows

C++ 将qt5.2.1 linux交叉编译到windows,c++,qt,static,cross-platform,mingw-w64,C++,Qt,Static,Cross Platform,Mingw W64,我正在尝试交叉编译QT5静态应用程序。它适用于控制台应用程序,但不适用于图形应用程序。 以下是全部内容: main.cpp: #if defined(_WIN32) || defined (_WIN64) #include <QtPlugin> Q_IMPORT_PLUGIN(QWindowsIntegrationPlugin); #endif #include <QApplication> #include "MainWindow.h" int main(int arg

我正在尝试交叉编译QT5静态应用程序。它适用于控制台应用程序,但不适用于图形应用程序。 以下是全部内容:

main.cpp:

#if defined(_WIN32) || defined (_WIN64)
#include <QtPlugin>
Q_IMPORT_PLUGIN(QWindowsIntegrationPlugin);
#endif
#include <QApplication>
#include "MainWindow.h"
int main(int argc, char *argv[]) {
  QApplication app(argc, argv);
  MainWindow *m = new MainWindow();
  m->show();
  return app.exec();
}
MainWindow.h:

#pragma once
#include "ui_MainWindow.h"
class MainWindow : public QMainWindow {
  Q_OBJECT
public:
  MainWindow();
  virtual ~MainWindow();
private:
  Ui::MainWindow widget;
};
MainWindow.ui:

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>MainWindow</class>
 <widget class="QMainWindow" name="MainWindow">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>99</width>
    <height>40</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>MainWindow</string>
  </property>
  <widget class="QWidget" name="centralwidget">
   <layout class="QVBoxLayout" name="verticalLayout">
    <item>
     <widget class="QPushButton" name="pushButton">
      <property name="text">
       <string>PushButton</string>
      </property>
     </widget>
    </item>
   </layout>
  </widget>
 </widget>
 <resources/>
 <connections/>
</ui>
然后我就跑

/usr/bin/i686-w64-mingw32-qmake-qt5 -o Makefile win32.pro
make
并获得:

make -f Makefile.Release
make[1]: Entering directory '/mnt/DATI/Projects/Personal/TestQT5'
i686-w64-mingw32-g++ -g -static -Wl,-subsystem,windows -mthreads -o win32/dest/TestQT5.exe win32/obj/TestQT5_resource_res.o win32/obj/MainWindow.o win32/obj/main.o win32/obj/moc_MainWindow.o  -lglu32 -lopengl32 -lmingw32 -lqt5main /usr/i686-w64-mingw32/lib/libQt5PlatformSupport.a /usr/i686-w64-mingw32/lib/libQt5Core.a /usr/i686-w64-mingw32/lib/libQt5Gui.a /usr/i686-w64-mingw32/lib/libQt5Widgets.a /usr/i686-w64-mingw32/lib/qt/plugins/platforms/libqwindows.a -L/usr/i686-w64-mingw32/lib -lQt5Widgets -lQt5Gui -lgdi32 -lcomdlg32 -loleaut32 -limm32 -lwinmm -ljpeg -lpng -lQt5Core -lole32 -luuid -lws2_32 -ladvapi32 -lshell32 -luser32 -lkernel32 -lz -lpcre16 
/usr/i686-w64-mingw32/lib/qt/plugins/platforms/libqwindows.a(qwindowsintegration.o): In function `ZN23QWindowsNativeInterface24nativeResourceForContextERK10QByteArrayP14QOpenGLContext':
/build/mingw-w64-qt5-base-static/src/qtbase-opensource-src-5.2.1/src/plugins/platforms/windows/qwindowsintegration.cpp:208: undefined reference to `QEGLPlatformContext::eglContext() const'
/build/mingw-w64-qt5-base-static/src/qtbase-opensource-src-5.2.1/src/plugins/platforms/windows/qwindowsintegration.cpp:206: undefined reference to `QEGLPlatformContext::eglDisplay() const'
/build/mingw-w64-qt5-base-static/src/qtbase-opensource-src-5.2.1/src/plugins/platforms/windows/qwindowsintegration.cpp:210: undefined reference to `QEGLPlatformContext::eglConfig() const'
/usr/i686-w64-mingw32/lib/qt/plugins/platforms/libqwindows.a(qwindowseglcontext.o): In function `~QWindowsEGLContext':
/build/mingw-w64-qt5-base-static/src/qtbase-opensource-src-5.2.1/src/plugins/platforms/windows/qwindowseglcontext.cpp:134: undefined reference to `QEGLPlatformContext::~QEGLPlatformContext()'
/usr/i686-w64-mingw32/lib/qt/plugins/platforms/libqwindows.a(qwindowseglcontext.o): In function `ZN18QWindowsEGLContext11makeCurrentEP16QPlatformSurface':
/build/mingw-w64-qt5-base-static/src/qtbase-opensource-src-5.2.1/src/plugins/platforms/windows/qwindowseglcontext.cpp:157: undefined reference to `QEGLPlatformContext::eglConfig() const'
/build/mingw-w64-qt5-base-static/src/qtbase-opensource-src-5.2.1/src/plugins/platforms/windows/qwindowseglcontext.cpp:158: undefined reference to `QEGLPlatformContext::eglContext() const'
/build/mingw-w64-qt5-base-static/src/qtbase-opensource-src-5.2.1/src/plugins/platforms/windows/qwindowseglcontext.cpp:158: undefined reference to `QEGLPlatformContext::eglDisplay() const'
/build/mingw-w64-qt5-base-static/src/qtbase-opensource-src-5.2.1/src/plugins/platforms/windows/qwindowseglcontext.cpp:158: undefined reference to `_imp__eglMakeCurrent@16'
/build/mingw-w64-qt5-base-static/src/qtbase-opensource-src-5.2.1/src/plugins/platforms/windows/qwindowseglcontext.cpp:161: undefined reference to `_imp__eglGetError@0'
/usr/i686-w64-mingw32/lib/qt/plugins/platforms/libqwindows.a(qwindowseglcontext.o): In function `ZN24QWindowsEGLStaticContext6createEv':
/build/mingw-w64-qt5-base-static/src/qtbase-opensource-src-5.2.1/src/plugins/platforms/windows/qwindowseglcontext.cpp:79: undefined reference to `_imp__eglGetDisplay@4'
/build/mingw-w64-qt5-base-static/src/qtbase-opensource-src-5.2.1/src/plugins/platforms/windows/qwindowseglcontext.cpp:87: undefined reference to `_imp__eglInitialize@12'
/build/mingw-w64-qt5-base-static/src/qtbase-opensource-src-5.2.1/src/plugins/platforms/windows/qwindowseglcontext.cpp:89: undefined reference to `_imp__eglGetError@0'
/usr/i686-w64-mingw32/lib/qt/plugins/platforms/libqwindows.a(qwindowseglcontext.o): In function `ZN24QWindowsEGLStaticContextD2Ev':
/build/mingw-w64-qt5-base-static/src/qtbase-opensource-src-5.2.1/src/plugins/platforms/windows/qwindowseglcontext.cpp:102: undefined reference to `_imp__eglTerminate@4'
/usr/i686-w64-mingw32/lib/qt/plugins/platforms/libqwindows.a(qwindowseglcontext.o): In function `ZN18QWindowsEGLContextC2ERK14QSharedPointerI24QWindowsEGLStaticContextERK14QSurfaceFormatP22QPlatformOpenGLContext':
/build/mingw-w64-qt5-base-static/src/qtbase-opensource-src-5.2.1/src/plugins/platforms/windows/qwindowseglcontext.cpp:130: undefined reference to `QEGLPlatformContext::QEGLPlatformContext(QSurfaceFormat const&, QPlatformOpenGLContext*, void*, unsigned int)'
/usr/i686-w64-mingw32/lib/qt/plugins/platforms/libqwindows.a(qwindowseglcontext.o): In function `ZN18QWindowsEGLContextD2Ev':
/build/mingw-w64-qt5-base-static/src/qtbase-opensource-src-5.2.1/src/plugins/platforms/windows/qwindowseglcontext.cpp:134: undefined reference to `QEGLPlatformContext::~QEGLPlatformContext()'
/usr/i686-w64-mingw32/lib/qt/plugins/platforms/libqwindows.a(qwindowseglcontext.o):qwindowseglcontext.cpp:(.rdata$_ZTV18QWindowsEGLContext[__ZTV18QWindowsEGLContext]+0x10): undefined reference to `QEGLPlatformContext::format() const'
/usr/i686-w64-mingw32/lib/qt/plugins/platforms/libqwindows.a(qwindowseglcontext.o):qwindowseglcontext.cpp:(.rdata$_ZTV18QWindowsEGLContext[__ZTV18QWindowsEGLContext]+0x14): undefined reference to `QEGLPlatformContext::swapBuffers(QPlatformSurface*)'
/usr/i686-w64-mingw32/lib/qt/plugins/platforms/libqwindows.a(qwindowseglcontext.o):qwindowseglcontext.cpp:(.rdata$_ZTV18QWindowsEGLContext[__ZTV18QWindowsEGLContext]+0x20): undefined reference to `QEGLPlatformContext::doneCurrent()'
/usr/i686-w64-mingw32/lib/qt/plugins/platforms/libqwindows.a(qwindowseglcontext.o):qwindowseglcontext.cpp:(.rdata$_ZTV18QWindowsEGLContext[__ZTV18QWindowsEGLContext]+0x2c): undefined reference to `QEGLPlatformContext::getProcAddress(QByteArray const&)'
/usr/i686-w64-mingw32/lib/qt/plugins/platforms/libqwindows.a(qwindowswindow.o): In function `ZN14QWindowsWindow22ensureEglSurfaceHandleERK14QSharedPointerI24QWindowsEGLStaticContextEPv':
/build/mingw-w64-qt5-base-static/src/qtbase-opensource-src-5.2.1/src/plugins/platforms/windows/qwindowswindow.cpp:2128: undefined reference to `_imp__eglCreateWindowSurface@16'
/build/mingw-w64-qt5-base-static/src/qtbase-opensource-src-5.2.1/src/plugins/platforms/windows/qwindowswindow.cpp:2132: undefined reference to `_imp__eglGetError@0'
/usr/i686-w64-mingw32/lib/qt/plugins/platforms/libqwindows.a(qwindowswindow.o): In function `ZN14QWindowsWindow13destroyWindowEv':
/build/mingw-w64-qt5-base-static/src/qtbase-opensource-src-5.2.1/src/plugins/platforms/windows/qwindowswindow.cpp:967: undefined reference to `_imp__eglDestroySurface@8'
/usr/i686-w64-mingw32/lib/libQt5Gui.a(qopenglcontext.o):(.text+0x329): undefined reference to `_imp__glGetIntegerv@8'
/usr/i686-w64-mingw32/lib/libQt5Gui.a(qopenglcontext.o):(.text+0x2632): undefined reference to `_imp__glFlush@0'
/usr/lib/gcc/i686-w64-mingw32/4.8.2/../../../../i686-w64-mingw32/bin/ld: /usr/i686-w64-mingw32/lib/libQt5Gui.a(qopenglcontext.o): bad reloc address 0x2 in section `.text$_ZN26QOpenGLSharedResourceGuardD1Ev[__ZN26QOpenGLSharedResourceGuardD1Ev]'
collect2: error: ld returned 1 exit status
Makefile.Release:84: recipe for target 'win32/dest/TestQT5.exe' failed
make[1]: *** [win32/dest/TestQT5.exe] Error 1
make[1]: Leaving directory '/mnt/DATI/Projects/Personal/TestQT5'
Makefile:34: recipe for target 'release' failed
make: *** [release] Error 2
我已经尝试在INCLUDEPATH和LIBS libGLESv2.a、libEGL.a、glu32.a、glu32.a、opengl32.a(都存在于include路径中)中包含,但错误仍然完全相同

您可以从下载文件

你能帮我找到丢失的东西吗? 谢谢

/usr/bin/i686-w64-mingw32-qmake-qt5 -o Makefile win32.pro
make
make -f Makefile.Release
make[1]: Entering directory '/mnt/DATI/Projects/Personal/TestQT5'
i686-w64-mingw32-g++ -g -static -Wl,-subsystem,windows -mthreads -o win32/dest/TestQT5.exe win32/obj/TestQT5_resource_res.o win32/obj/MainWindow.o win32/obj/main.o win32/obj/moc_MainWindow.o  -lglu32 -lopengl32 -lmingw32 -lqt5main /usr/i686-w64-mingw32/lib/libQt5PlatformSupport.a /usr/i686-w64-mingw32/lib/libQt5Core.a /usr/i686-w64-mingw32/lib/libQt5Gui.a /usr/i686-w64-mingw32/lib/libQt5Widgets.a /usr/i686-w64-mingw32/lib/qt/plugins/platforms/libqwindows.a -L/usr/i686-w64-mingw32/lib -lQt5Widgets -lQt5Gui -lgdi32 -lcomdlg32 -loleaut32 -limm32 -lwinmm -ljpeg -lpng -lQt5Core -lole32 -luuid -lws2_32 -ladvapi32 -lshell32 -luser32 -lkernel32 -lz -lpcre16 
/usr/i686-w64-mingw32/lib/qt/plugins/platforms/libqwindows.a(qwindowsintegration.o): In function `ZN23QWindowsNativeInterface24nativeResourceForContextERK10QByteArrayP14QOpenGLContext':
/build/mingw-w64-qt5-base-static/src/qtbase-opensource-src-5.2.1/src/plugins/platforms/windows/qwindowsintegration.cpp:208: undefined reference to `QEGLPlatformContext::eglContext() const'
/build/mingw-w64-qt5-base-static/src/qtbase-opensource-src-5.2.1/src/plugins/platforms/windows/qwindowsintegration.cpp:206: undefined reference to `QEGLPlatformContext::eglDisplay() const'
/build/mingw-w64-qt5-base-static/src/qtbase-opensource-src-5.2.1/src/plugins/platforms/windows/qwindowsintegration.cpp:210: undefined reference to `QEGLPlatformContext::eglConfig() const'
/usr/i686-w64-mingw32/lib/qt/plugins/platforms/libqwindows.a(qwindowseglcontext.o): In function `~QWindowsEGLContext':
/build/mingw-w64-qt5-base-static/src/qtbase-opensource-src-5.2.1/src/plugins/platforms/windows/qwindowseglcontext.cpp:134: undefined reference to `QEGLPlatformContext::~QEGLPlatformContext()'
/usr/i686-w64-mingw32/lib/qt/plugins/platforms/libqwindows.a(qwindowseglcontext.o): In function `ZN18QWindowsEGLContext11makeCurrentEP16QPlatformSurface':
/build/mingw-w64-qt5-base-static/src/qtbase-opensource-src-5.2.1/src/plugins/platforms/windows/qwindowseglcontext.cpp:157: undefined reference to `QEGLPlatformContext::eglConfig() const'
/build/mingw-w64-qt5-base-static/src/qtbase-opensource-src-5.2.1/src/plugins/platforms/windows/qwindowseglcontext.cpp:158: undefined reference to `QEGLPlatformContext::eglContext() const'
/build/mingw-w64-qt5-base-static/src/qtbase-opensource-src-5.2.1/src/plugins/platforms/windows/qwindowseglcontext.cpp:158: undefined reference to `QEGLPlatformContext::eglDisplay() const'
/build/mingw-w64-qt5-base-static/src/qtbase-opensource-src-5.2.1/src/plugins/platforms/windows/qwindowseglcontext.cpp:158: undefined reference to `_imp__eglMakeCurrent@16'
/build/mingw-w64-qt5-base-static/src/qtbase-opensource-src-5.2.1/src/plugins/platforms/windows/qwindowseglcontext.cpp:161: undefined reference to `_imp__eglGetError@0'
/usr/i686-w64-mingw32/lib/qt/plugins/platforms/libqwindows.a(qwindowseglcontext.o): In function `ZN24QWindowsEGLStaticContext6createEv':
/build/mingw-w64-qt5-base-static/src/qtbase-opensource-src-5.2.1/src/plugins/platforms/windows/qwindowseglcontext.cpp:79: undefined reference to `_imp__eglGetDisplay@4'
/build/mingw-w64-qt5-base-static/src/qtbase-opensource-src-5.2.1/src/plugins/platforms/windows/qwindowseglcontext.cpp:87: undefined reference to `_imp__eglInitialize@12'
/build/mingw-w64-qt5-base-static/src/qtbase-opensource-src-5.2.1/src/plugins/platforms/windows/qwindowseglcontext.cpp:89: undefined reference to `_imp__eglGetError@0'
/usr/i686-w64-mingw32/lib/qt/plugins/platforms/libqwindows.a(qwindowseglcontext.o): In function `ZN24QWindowsEGLStaticContextD2Ev':
/build/mingw-w64-qt5-base-static/src/qtbase-opensource-src-5.2.1/src/plugins/platforms/windows/qwindowseglcontext.cpp:102: undefined reference to `_imp__eglTerminate@4'
/usr/i686-w64-mingw32/lib/qt/plugins/platforms/libqwindows.a(qwindowseglcontext.o): In function `ZN18QWindowsEGLContextC2ERK14QSharedPointerI24QWindowsEGLStaticContextERK14QSurfaceFormatP22QPlatformOpenGLContext':
/build/mingw-w64-qt5-base-static/src/qtbase-opensource-src-5.2.1/src/plugins/platforms/windows/qwindowseglcontext.cpp:130: undefined reference to `QEGLPlatformContext::QEGLPlatformContext(QSurfaceFormat const&, QPlatformOpenGLContext*, void*, unsigned int)'
/usr/i686-w64-mingw32/lib/qt/plugins/platforms/libqwindows.a(qwindowseglcontext.o): In function `ZN18QWindowsEGLContextD2Ev':
/build/mingw-w64-qt5-base-static/src/qtbase-opensource-src-5.2.1/src/plugins/platforms/windows/qwindowseglcontext.cpp:134: undefined reference to `QEGLPlatformContext::~QEGLPlatformContext()'
/usr/i686-w64-mingw32/lib/qt/plugins/platforms/libqwindows.a(qwindowseglcontext.o):qwindowseglcontext.cpp:(.rdata$_ZTV18QWindowsEGLContext[__ZTV18QWindowsEGLContext]+0x10): undefined reference to `QEGLPlatformContext::format() const'
/usr/i686-w64-mingw32/lib/qt/plugins/platforms/libqwindows.a(qwindowseglcontext.o):qwindowseglcontext.cpp:(.rdata$_ZTV18QWindowsEGLContext[__ZTV18QWindowsEGLContext]+0x14): undefined reference to `QEGLPlatformContext::swapBuffers(QPlatformSurface*)'
/usr/i686-w64-mingw32/lib/qt/plugins/platforms/libqwindows.a(qwindowseglcontext.o):qwindowseglcontext.cpp:(.rdata$_ZTV18QWindowsEGLContext[__ZTV18QWindowsEGLContext]+0x20): undefined reference to `QEGLPlatformContext::doneCurrent()'
/usr/i686-w64-mingw32/lib/qt/plugins/platforms/libqwindows.a(qwindowseglcontext.o):qwindowseglcontext.cpp:(.rdata$_ZTV18QWindowsEGLContext[__ZTV18QWindowsEGLContext]+0x2c): undefined reference to `QEGLPlatformContext::getProcAddress(QByteArray const&)'
/usr/i686-w64-mingw32/lib/qt/plugins/platforms/libqwindows.a(qwindowswindow.o): In function `ZN14QWindowsWindow22ensureEglSurfaceHandleERK14QSharedPointerI24QWindowsEGLStaticContextEPv':
/build/mingw-w64-qt5-base-static/src/qtbase-opensource-src-5.2.1/src/plugins/platforms/windows/qwindowswindow.cpp:2128: undefined reference to `_imp__eglCreateWindowSurface@16'
/build/mingw-w64-qt5-base-static/src/qtbase-opensource-src-5.2.1/src/plugins/platforms/windows/qwindowswindow.cpp:2132: undefined reference to `_imp__eglGetError@0'
/usr/i686-w64-mingw32/lib/qt/plugins/platforms/libqwindows.a(qwindowswindow.o): In function `ZN14QWindowsWindow13destroyWindowEv':
/build/mingw-w64-qt5-base-static/src/qtbase-opensource-src-5.2.1/src/plugins/platforms/windows/qwindowswindow.cpp:967: undefined reference to `_imp__eglDestroySurface@8'
/usr/i686-w64-mingw32/lib/libQt5Gui.a(qopenglcontext.o):(.text+0x329): undefined reference to `_imp__glGetIntegerv@8'
/usr/i686-w64-mingw32/lib/libQt5Gui.a(qopenglcontext.o):(.text+0x2632): undefined reference to `_imp__glFlush@0'
/usr/lib/gcc/i686-w64-mingw32/4.8.2/../../../../i686-w64-mingw32/bin/ld: /usr/i686-w64-mingw32/lib/libQt5Gui.a(qopenglcontext.o): bad reloc address 0x2 in section `.text$_ZN26QOpenGLSharedResourceGuardD1Ev[__ZN26QOpenGLSharedResourceGuardD1Ev]'
collect2: error: ld returned 1 exit status
Makefile.Release:84: recipe for target 'win32/dest/TestQT5.exe' failed
make[1]: *** [win32/dest/TestQT5.exe] Error 1
make[1]: Leaving directory '/mnt/DATI/Projects/Personal/TestQT5'
Makefile:34: recipe for target 'release' failed
make: *** [release] Error 2