IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Qt Discussion :

Erreur de compilation


Sujet :

Qt

  1. #1
    Membre à l'essai
    Homme Profil pro
    c++/Qt
    Inscrit en
    Septembre 2017
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : c++/Qt

    Informations forums :
    Inscription : Septembre 2017
    Messages : 27
    Points : 12
    Points
    12
    Par défaut Erreur de compilation
    Bonjour, voilà je me suis lancer dans un petit projet. Pour cela j'ai besoin d'une librairie externe à utiliser dans Qt.

    .pro
    Code qt-pro : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    QT       += core gui
     
    greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
     
    TARGET = OgameBot
    TEMPLATE = app
     
    # The following define makes your compiler emit warnings if you use
    # any feature of Qt which has been marked as deprecated (the exact warnings
    # depend on your compiler). Please consult the documentation of the
    # deprecated API in order to know how to port your code away from it.
    DEFINES += QT_DEPRECATED_WARNINGS
     
    # You can also make your code fail to compile if you use deprecated APIs.
    # In order to do so, uncomment the following line.
    # You can also select to disable deprecated APIs only up to a certain version of Qt.
    #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0
     
    SOURCES += \
            main.cpp \
            mainwindow.cpp
     
    HEADERS += \
            mainwindow.h
     
    FORMS += \
            mainwindow.ui
     
     
     
    win32:CONFIG(release, debug|release): LIBS += -L$$PWD/../libRequests/release/ -lRequests
    else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/../libRequests/debug/ -lRequests
    else:unix: LIBS += -L$$PWD/../libRequests/ -lRequests
     
    INCLUDEPATH += $$PWD/../libRequests
    DEPENDPATH += $$PWD/../libRequests
     
    win32-g++:CONFIG(release, debug|release): PRE_TARGETDEPS += $$PWD/../libRequests/release/libRequests.a
    else:win32-g++:CONFIG(debug, debug|release): PRE_TARGETDEPS += $$PWD/../libRequests/debug/libRequests.a
    else:win32:!win32-g++:CONFIG(release, debug|release): PRE_TARGETDEPS += $$PWD/../libRequests/release/Requests.lib
    else:win32:!win32-g++:CONFIG(debug, debug|release): PRE_TARGETDEPS += $$PWD/../libRequests/debug/Requests.lib
    else:unix: PRE_TARGETDEPS += $$PWD/../libRequests/libRequests.a

    main.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    #include <QApplication>
     
    #include "mainwindow.h"
    #include "Request.h"
     
    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
        MainWindow w;
        w.show();
     
        HTTP::Request request;
     
        return a.exec();
    }
    Comme vous pouvez le constaté je fait seulement un appel a HTTP::Request. Qui se trouve dans ma librairie externe. => https://github.com/collinturney/libRequests

    Ci-dessous la liste des erreurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
    /Library/Developer/CommandLineTools/usr/bin/clang++ -stdlib=libc++ -headerpad_max_install_names  -arch x86_64 -Wl,-syslibroot,/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk -mmacosx-version-min=10.10 -Wl,-rpath,@executable_path/Frameworks -Wl,-rpath,/Users/jordanbarbe/Qt/5.10.1/clang_64/lib -o OgameBot.app/Contents/MacOS/OgameBot main.o mainwindow.o moc_mainwindow.o   -F/Users/jordanbarbe/Qt/5.10.1/clang_64/lib -L/Users/jordanbarbe/go-workspace/Project/OgameBot/../libRequests/ -lRequests -framework QtWidgets -framework QtGui -framework QtCore -framework DiskArbitration -framework IOKit -framework OpenGL -framework AGL 
    ld: warning: object file (/Users/jordanbarbe/go-workspace/Project/libRequests/libRequests.a(Request.o)) was built for newer OSX version (10.13) than being linked (10.10)
    ld: warning: object file (/Users/jordanbarbe/go-workspace/Project/libRequests/libRequests.a(Headers.o)) was built for newer OSX version (10.13) than being linked (10.10)
    ld: warning: object file (/Users/jordanbarbe/go-workspace/Project/libRequests/libRequests.a(Response.o)) was built for newer OSX version (10.13) than being linked (10.10)
    Undefined symbols for architecture x86_64:
      "_curl_easy_cleanup", referenced from:
          HTTP::Request::~Request() in libRequests.a(Request.o)
          HTTP::Request::~Request() in libRequests.a(Request.o)
      "_curl_easy_getinfo", referenced from:
          HTTP::Request::perform(HTTP::Response&) in libRequests.a(Request.o)
      "_curl_easy_init", referenced from:
          HTTP::Request::Request() in libRequests.a(Request.o)
          HTTP::Request::Request() in libRequests.a(Request.o)
      "_curl_easy_perform", referenced from:
          HTTP::Request::perform(HTTP::Response&) in libRequests.a(Request.o)
      "_curl_easy_reset", referenced from:
          HTTP::Request::Request() in libRequests.a(Request.o)
          HTTP::Request::curlReset() in libRequests.a(Request.o)
          HTTP::Request::Request() in libRequests.a(Request.o)
          HTTP::Request::get(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) in libRequests.a(Request.o)
          HTTP::Request::get(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, HTTP::Headers const&) in libRequests.a(Request.o)
          HTTP::Request::post(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) in libRequests.a(Request.o)
          HTTP::Request::post(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, HTTP::Headers const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) in libRequests.a(Request.o)
          ...
      "_curl_easy_setopt", referenced from:
          HTTP::Request::Request() in libRequests.a(Request.o)
          HTTP::Request::curlReset() in libRequests.a(Request.o)
          HTTP::Request::Request() in libRequests.a(Request.o)
          HTTP::Request::get(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) in libRequests.a(Request.o)
          HTTP::Request::get(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, HTTP::Headers const&) in libRequests.a(Request.o)
          HTTP::Request::post(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) in libRequests.a(Request.o)
          HTTP::Request::post(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, HTTP::Headers const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) in libRequests.a(Request.o)
          ...
      "_curl_easy_strerror", referenced from:
          HTTP::Request::perform(HTTP::Response&) in libRequests.a(Request.o)
      "_curl_slist_append", referenced from:
          HTTP::Headers::set(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) in libRequests.a(Headers.o)
          HTTP::Headers::set(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) in libRequests.a(Headers.o)
      "_curl_slist_free_all", referenced from:
          HTTP::Headers::~Headers() in libRequests.a(Headers.o)
          HTTP::Headers::clear() in libRequests.a(Headers.o)
          HTTP::Headers::~Headers() in libRequests.a(Headers.o)
    ld: symbol(s) not found for architecture x86_64
    clang: error: linker command failed with exit code 1 (use -v to see invocation)
    make: *** [OgameBot.app/Contents/MacOS/OgameBot] Error 1
    Je ne comprend pas les erreurs .. Merci pour votre aide.

  2. #2
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 626
    Points : 30 684
    Points
    30 684
    Par défaut
    Salut,

    A mon sens, l'origine de l'erreur est indiquée dans les lignes 3 à 5 du log que tu nous fournis:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ld: warning: object file (/Users/jordanbarbe/go-workspace/Project/libRequests/libRequests.a(Request.o)) was built for newer OSX version (10.13) than being linked (10.10)
    ld: warning: object file (/Users/jordanbarbe/go-workspace/Project/libRequests/libRequests.a(Headers.o)) was built for newer OSX version (10.13) than being linked (10.10)
    ld: warning: object file (/Users/jordanbarbe/go-workspace/Project/libRequests/libRequests.a(Response.o)) was built for newer OSX version (10.13) than being linked (10.10)
    Ces lignes semblent indiquer que ton système a généré ta bibliothèque libRequests.a pour la version 10.13 d'OSX, mais que l'édition de liens a utiliser la version destinée à OSX 10.10 de certaines bibliothèques "tierces".

    La suite du log nous parle d'une série de symboles non définis commençant par [c]curl_*[/], ce qui nous permet déjà de restreindre le champs des recherches à la seule bibliothèque libcurl (une bibliothèque de transfert de fichiers multiprotocoles )

    Mais cela nous laisse malgré tout encore quatre possibilités à explorer. Et le malheur veut que je ne connaisse pas assez OSX pour t'aider à choisir celle qui a le plus de chances de poser problème:
    1. Soit il faut rajouter libcurl aux options d'édition de liens (en ajoutant -lcurl aux options de compilation !!! il s'agit d'un L minuscule !!! )
    2. Soit libcurl (dans sa version dev) est purement et simplement absent de ton système. Il faudra donc l'installer
    3. Soit la version de libcurl a été générée pour une version "trop ancienne" de OSX (ex: 10.10, alors qu'il semblerait que tu utilises la version 10.13)
    4. Soit la version de libcurl a été générée pour une utilisation 32bits, alors que tu travailles sur une architecture 64bits.

    J'aurais tendance à écarter la possibilité (1), car l'absence de l'option -lcurl peut n'être qu'un symptôme de l'absence pure et simple de libcurl dans sa version dev sur ton système.

    De la même manière, j'aurais tendance à écarter la possibilité (4), car j'ose espérer que le système de paquetages d'OSX ne foire pas au point de mélanger les différentes architectures

    Mais il reste donc les possibilités (2) et (3) à explorer. Pour la première, la solution serait simple: installer la version dev de libcurl (à toi de savoir comment t'y prendre) puis relancer qmake. Pour la deuxième, je ne suis pas assez au fait de ce que fait OSX pour te proposer une solution correcte

Discussions similaires

  1. Erreur de compilation après modification du Uses
    Par DevelOpeR13 dans le forum Langage
    Réponses: 5
    Dernier message: 30/10/2007, 14h23
  2. Réponses: 2
    Dernier message: 23/09/2003, 14h32
  3. Réponses: 10
    Dernier message: 22/09/2003, 21h58
  4. Réponses: 4
    Dernier message: 27/08/2003, 21h34
  5. Réponses: 2
    Dernier message: 04/03/2003, 23h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo