diff -r b273b43b16d2 -r 8354b390f1a2 qmlfrontend/main.cpp --- a/qmlfrontend/main.cpp Wed Nov 07 15:55:32 2018 +0100 +++ b/qmlfrontend/main.cpp Wed Nov 07 15:59:51 2018 +0100 @@ -1,12 +1,48 @@ +#include #include +#include #include +#include "engine_interface.h" #include "hwengine.h" +namespace Engine { +protocol_version_t* protocol_version; +start_engine_t* start_engine; +generate_preview_t* generate_preview; +cleanup_t* cleanup; +}; // namespace Engine + +void loadEngineLibrary() { +#ifdef Q_OS_WIN + QLibrary hwlib("./libhedgewars_engine.dll"); +#else + QLibrary hwlib("./libhedgewars_engine.so"); +#endif + + if (!hwlib.load()) + qWarning() << "Engine library not found" << hwlib.errorString(); + + Engine::protocol_version = reinterpret_cast( + hwlib.resolve("protocol_version")); + Engine::start_engine = + reinterpret_cast(hwlib.resolve("start_engine")); + Engine::generate_preview = reinterpret_cast( + hwlib.resolve("generate_preview")); + Engine::cleanup = + reinterpret_cast(hwlib.resolve("cleanup")); + + if (Engine::protocol_version) + qDebug() << "Loaded engine library with protocol version" + << Engine::protocol_version(); +} + int main(int argc, char* argv[]) { QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling); QGuiApplication app(argc, argv); + loadEngineLibrary(); + QQmlApplicationEngine engine; HWEngine::exposeToQML();