Итак, я пытаюсь разработать приложение Qt и запускать его на другой машине с Windows 8.1, у которой нет Qt. На моем первом компьютере я использовал Visual Studio 2013 для разработки моего приложения и скомпилировал его в режиме выпуска с помощью многопоточного DLL-флага.«Не удалось создать контекст». на компьютере без Qt
Это файл .exe. В той же папке, у меня есть:
accessible/ platform/
assimp.dll kernel32.dll
icudt52.dll icuin.dll
icuuc52.dll opengl32.dll
libEGL.dll libGLESv2.dll
Qt5Core.dll Qt5Gui.dll
Qt5OpenGL.dll Qt5Widgets.dll
msvcp110.dll msvcr110.dll
msvcp120.dll msvcr120.dll
Я скопировал Qt библиотеки DLL из C: /Qt32bits/5.3/msvc2013_opengl/. За исключением libEGL.dll и libGLESv2.dll, которые я получил из QtCreator, поскольку я не мог найти их в предыдущей папке. Однако это не должно быть проблемой, поскольку я компилирую с помощью msvc (не mingw), правильно?
В моем коде, в самом начале у меня есть:
QApplication app(argc, argv);
QGLFormat format;
format.setProfile(QGLFormat::CoreProfile);
format.setVersion(4, 0);
QGLFormat::setDefaultFormat(format);
/*And then later*/
cout << "Creating Window" << endl;
GLWidget *widget = new GLWidget(i); //i is the id of the widget
cout << "Widget created" << endl;
widget->makeCurrent();
cout << "Context current" << endl;
GLWidget происходит от QGLWidget и в конструкторе, я просто установить его атрибут ID, чтобы я.
На моей машине все работает нормально. Но когда я запускаю мой исполняемый файл на второй машине, я получаю выход:
"Creating Window"
"Failed to make context current."
"Widget created"
"Context current"
И тогда он выходит из строя (MyApp.exe перестал работать) ... Что странно, что «Не удалось установить контекст тока "(который, как мне кажется, был создан makeCurrent()), предшествует созданию« Виджета »... Любая идея о том, что не так, и как я мог отладить это?
Большое спасибо за ваше время и помощь!
Запускаете ли вы исполняемый файл на собственной машине в режиме освобождения вне qtcreator? –
Да, на самом деле я вообще не использую QtCreator, только Visual Studio 2013. Я попытался изменить имя папки Qt, чтобы сделать так, как если бы Qt не был установлен на моей машине, и он работает в режиме выпуска (я просто дважды щелкните exe) – Gpack
Итак, вы запускаете приложение за пределами vs13, а затем не запускаете его через IDE? Вы можете проверить с помощью depency-walker, какую DLL будет использовать исполняемый файл. –