2016-04-21 3 views
2

У меня есть простое приложение C++ (не Qt Quick) (которое не использует механизм .pro), построенный против официальной сборки Qt 5.4.2 x64 (с поддержкой openGL). Как только я использую объект QWebEngineView в своем приложении, он не может загрузить сообщение «Указанная процедура не найдена».QtWebEngine - процедура не найдена

С помощью GFlags, кажется, она не может найти следующую декодированную процедуру:

public: __cdecl QOpenGLWidget::QOpenGLWidget(class QWidget * __ptr64,class QFlags<enum Qt::WindowType>) __ptr64 

Я не уверен, чтобы понять, почему это не может быть найдено, я поставил для тестирования все dll в Qt_DIR \ bin рядом с приложением и все подключаемые модули. Список препроцессора Я использую, чтобы построить мое приложение, являются следующим:

WIN32;_DEBUG;_WINDOWS;_USRDLL;WIN64;QT_WEBENGINEWIDGETS_LIB;QT_WEBENGINE_LIB;QT_QUICK_LIB;QT_PRINTSUPPORT_LIB;QT_WIDGETS_LIB;QT_GUI_LIB;QT_QML_LIB;QT_NETWORK_LIB;QT_UITOOLS_LIB;QT_CORE_LIB;WIN32PROJECT5_EXPORTS;PLUGIN_VENDOR_NAME="$(VendorName)";PLUGIN_VERSION="$(PluginVersion)";PLUGIN_NAME="$(PluginName)";%(PreprocessorDefinitions) 

И входными библиотеки:

Qt5Cored.lib;Qt5Guid.lib;Qt5Widgetsd.lib;Qt5WebKitd.lib;Qt5WebKitWidgetsd.lib;Qt5WebEngineWidgetsd.lib;Qt5WebEngined.lib;Qt5OpenGLExtensionsd.lib;Qt5OpenGLd.lib;Qt5Networkd.lib;Qt5Xmld.lib;D:\NotBackedUp\Tools\Qt\5.4\msvc2013_64_opengl\lib\qtmaind.lib;shell32.lib;Qt5Quickd.lib;Qt5PrintSupportd.lib;Qt5Qmld.lib;Qt5UiToolsd.lib;glu32.lib;opengl32.lib;gdi32.lib;user32.lib;o2d.lib;%(AdditionalDependencies) 

Я хотел бы попробовать простой пример в Qt Creator 3.6.1, но она жалуется: ОШИБКА проекта: Неизвестный модуль (ы) в QT: webenginewidgets

Browser.exe пример работает отлично (построен с визуальной студии)

у вас есть представление о том, что не так? PS: Я на окнах 8.1.

+1

В конце концов, что я хочу, чтобы войти в системе с помощью Google задней части с помощью OAuth 2. Так что мне нужно, чтобы показать, что браузер будет спрашивать пользователь, чтобы войти в системе, чтобы восстановить маркер доступа , если вы знаете альтернативный способ сделать это в Qt, я открыт :) – Jon

ответ

1

Для того, что процедура не найдена, моя dll является подключаемым модулем приложения Qt, которое не построено с поддержкой opengl. Только моя dll построена с поддержкой opengl. При инициализации подключаемого модуля приложение использует свои собственные dll, а не мои ... и поэтому не имеет поддержки opengl для веб-движка.

Для Qt Creator он автоматически выбирает неправильный комплект. Мне пришлось создать новый набор, который отображает правильные двоичные файлы Qt (с поддержкой opengl): выполните следующие действия: http://doc.qt.io/qtcreator/creator-configuring-projects.html.

Надеется, что это поможет кому-те

Смежные вопросы