Mapbox / openSSL



  • Hi there.

    I am currently trying to utilize a "mapbox" map inside an android application. I am using Qt 5.7 on windows. When I try to run example code that I have found online I merely get a blank screen on my tablet. It is my understanding that I need to include the 2 built openSSL libraries but I am struggling to do so. I was originally getting errors relating to not finding the libraries but after tracking down some prebuilt ones I appear to get this error.

    W libmapbox.so: (null):0 ((null)): qt.network.ssl: QSslSocket: cannot resolve SSLv2_client_method
    W libmapbox.so: (null):0 ((null)): qt.network.ssl: QSslSocket: cannot resolve SSLv2_server_method
    

    mapbox.pro

    TEMPLATE = app
    
    QT += qml quick location positioning network
    CONFIG += c++11
    
    SOURCES += main.cpp
    
    RESOURCES += qml.qrc
    
    LIBS += -L C:/openssl-1.0.2/armeabi-v7a/lib
    
    INCLUDEPATH += -L C:/openssl-1.0.2/include
    
    # Additional import path used to resolve QML modules in Qt Creator's code model
    QML_IMPORT_PATH =
    
    # Default rules for deployment.
    include(deployment.pri)
    
    contains(ANDROID_TARGET_ARCH,armeabi-v7a) {
        ANDROID_EXTRA_LIBS = \
            C:/openssl-1.0.2/armeabi-v7a/lib/libcrypto.so \
            C:/openssl-1.0.2/armeabi-v7a/lib/libssl.so \
    }
    

    Mainform.ui.qml

    import QtQuick 2.5
    import QtQuick.Window 2.2
    import QtQuick.Controls 1.3
    import QtQuick.Dialogs 1.2
    import QtPositioning 5.6
    import QtLocation 5.6
    import "C:/Users/Jayce/Desktop/mapbox-gl-native-master/platform/qt/include/QMapbox"
    
    Rectangle
    {
               Plugin
               {
               id: mapbox
               name:"mapbox"
               PluginParameter { name: "mapbox.access_token"; value: "//access_token//" }
               PluginParameter { name: "mapbox.map_id"; value: "//map id//" }
               }
               Map
               {
               id: map
               anchors.fill: parent
               plugin: mapbox
               zoomLevel: 15
               }
    
    }
    

    main.cpp

    #include <QGuiApplication>
    #include <QQmlApplicationEngine>
    #include <QQuickView>
    #include <C:/Users/Jayce/Desktop/mapbox-gl-native-master/platform/qt/include/QMapbox>
    #include <openssl/ssl.h>
    #include <openssl/ssl2.h>
    #include <openssl/ssl23.h>
    #include <openssl/aes.h>
    #include <QtNetwork>
    #include <QMap>
    
    
    
    int main(int argc, char *argv[])
    {
        QGuiApplication app(argc, argv);
    
        QQmlApplicationEngine engine;
        engine.load(QUrl(QStringLiteral("qrc:/MainForm.ui.qml")));
    
        return app.exec();
    }
    

    I also tried building my own openSSL libs using MSYS2 from this documentation:
    http://doc.qt.io/qt-5/opensslsupport.html

    it appeared to configure okay but then got to the "make build_libs" stage and received this error

    make build_libs
    making all in crypto...
    make[1]: Entering directory '/c/openssl-1.0.2h/crypto'
    /usr/bin/perl ../util/mkbuildinf.pl "gcc -I. -I.. -I../include  -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -march=armv7-a -mandroid -I/include -B/lib -O3 -fomit-frame-pointer -Wall -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DAES_ASM -DBSAES_ASM -DGHASH_ASM" "android-armv7" >buildinf.h
    gcc -I. -I.. -I../include  -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -march=armv7-a -mandroid -I/include -B/lib -O3 -fomit-frame-pointer -Wall -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DAES_ASM -DBSAES_ASM -DGHASH_ASM   -c -o cryptlib.o cryptlib.c
    gcc.exe: error: unrecognized command line option '-mandroid'
    <builtin>: recipe for target 'cryptlib.o' failed
    make[1]: *** [cryptlib.o] Error 1
    make[1]: Leaving directory '/c/openssl-1.0.2h/crypto'
    Makefile:284: recipe for target 'build_crypto' failed
    make: *** [build_crypto] Error 1
    
    

    I even tried making an ubuntu virtual machine and tried to build Qt there as I read that is comes with openssl enabled as default on linux. But after installing and restarting the VM it just hangd with a strange graphical glitch. I may create a dual boot for ubuntu and try again on linux without a virtual machine, but would prefer to be able to use windows to build my apps. Any thoughts?



  • Did you put the OpenSSL binaries in your path? Placing these in my path are typically enough for me to get past the issue. If you got pre-built binaries for Windows, were they built with the same version of VS you are building with? I believe there may be some dependency, so you could end up trying to build with 2015, and using 2013 built OpenSSL libs.


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.