C++ Library mit Cygwin bauen und verwenden


  • Gesperrt

    Hi, ich möchte gerne myhtml mit Cygwin verwenden.

    Bottom up:

    Fehlermeldung:
    <...>/hm.exe: error while loading shared libraries: libmyhtml-4.dll: cannot open shared object file: No such file or directory

    Hangman.cpp (Ausschnitt):

    #include <random>
    #include <iostream>
    #include <sstream>
    #include <vector>
    #include <string>
    #include <regex>
    #include <curlpp/Easy.hpp>
    #include <curlpp/cURLpp.hpp>
    #include <curlpp/Options.hpp>
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <myhtml/api.h>
    using namespace std;
    
    string getRandomWordFromWikipedia()
    {
        curlpp::Cleanup myCleanup;
        curlpp::Easy handle;
        handle.setOpt(curlpp::options::Url(string("https://en.wikipedia.org/wiki/special:random")));
        handle.setOpt(curlpp::options::FollowLocation(true));
        ostringstream os;
        os << handle;
        const string seq = os.str();
        const char *html = seq.c_str();
    
        myhtml_t *myhtml = myhtml_create();
        myhtml_init(myhtml, MyHTML_OPTIONS_DEFAULT, 1, 0);
    
        myhtml_tree_t *tree = myhtml_tree_create();
        myhtml_tree_init(tree, myhtml);
    
        myhtml_parse(tree, MyENCODING_DEFAULT, html, strlen(html));
    
        myhtml_collection_t *collection = myhtml_get_nodes_by_tag_id(tree, NULL, MyHTML_TAG_H1, NULL);
        const char *w = myhtml_node_text(collection->list[0], NULL);
    
        return string(w);
    
        // vector<string> r;
        // regex rgx("\\w+");
        // for (sregex_iterator it(seq.begin(), seq.end(), rgx), it_end; it != it_end; ++it)
        // {
        //     r.push_back((*it)[0]);
        // }
        // return r;
    }
    
    

    Kompilierung:
    $ g++ -L/usr/local/lib Hangman.cpp -o hm.exe -lcurl -lcurlpp -lmyhtml

    Die Library habe ich, wie beschrieben, so im Download-Hauptverzeichnis gebaut/installiert:

    make
    make test
    make install
    

    Ausgabe von make install:

    $ make install
    mkdir -p /usr/local/lib  /usr/local/include
    cp -av lib/* /usr/local/lib
    'lib/libmyhtml-4.dll' -> '/usr/local/lib/libmyhtml-4.dll'
    'lib/libmyhtml.dll.a' -> '/usr/local/lib/libmyhtml.dll.a'
    cp -av include/* /usr/local/include
    'include/mycore/mystring.h' -> '/usr/local/include/mycore/mystring.h'
    'include/mycore/utils.h' -> '/usr/local/include/mycore/utils.h'
    'include/mycore/utils/mcsync.h' -> '/usr/local/include/mycore/utils/mcsync.h'
    'include/mycore/utils/mhash.h' -> '/usr/local/include/mycore/utils/mhash.h'
    'include/mycore/utils/mcsimple.h' -> '/usr/local/include/mycore/utils/mcsimple.h'
    'include/mycore/utils/mctree.h' -> '/usr/local/include/mycore/utils/mctree.h'
    'include/mycore/utils/resources.h' -> '/usr/local/include/mycore/utils/resources.h'
    'include/mycore/utils/mcobject.h' -> '/usr/local/include/mycore/utils/mcobject.h'
    'include/mycore/utils/avl_tree.h' -> '/usr/local/include/mycore/utils/avl_tree.h'
    'include/mycore/utils/mchar_async.h' -> '/usr/local/include/mycore/utils/mchar_async.h'
    'include/mycore/utils/mcobject_async.h' -> '/usr/local/include/mycore/utils/mcobject_async.h'
    'include/mycore/perf.h' -> '/usr/local/include/mycore/perf.h'
    'include/mycore/myosi.h' -> '/usr/local/include/mycore/myosi.h'
    'include/mycore/incoming.h' -> '/usr/local/include/mycore/incoming.h'
    'include/mycore/mythread.h' -> '/usr/local/include/mycore/mythread.h'
    'include/mycore/thread_queue.h' -> '/usr/local/include/mycore/thread_queue.h'
    'include/myencoding/encoding.h' -> '/usr/local/include/myencoding/encoding.h'
    'include/myencoding/mystring.h' -> '/usr/local/include/myencoding/mystring.h'
    'include/myencoding/myosi.h' -> '/usr/local/include/myencoding/myosi.h'
    'include/myencoding/detect_resource.h' -> '/usr/local/include/myencoding/detect_resource.h'
    'include/myencoding/resource.h' -> '/usr/local/include/myencoding/resource.h'
    'include/myhtml/def.h' -> '/usr/local/include/myhtml/def.h'
    'include/myhtml/myhtml.h' -> '/usr/local/include/myhtml/myhtml.h'
    'include/myhtml/data_process.h' -> '/usr/local/include/myhtml/data_process.h'
    'include/myhtml/charef_resource.h' -> '/usr/local/include/myhtml/charef_resource.h'
    'include/myhtml/api.h' -> '/usr/local/include/myhtml/api.h'
    'include/myhtml/mynamespace_resource.h' -> '/usr/local/include/myhtml/mynamespace_resource.h'
    'include/myhtml/serialization.h' -> '/usr/local/include/myhtml/serialization.h'
    'include/myhtml/charef.h' -> '/usr/local/include/myhtml/charef.h'
    'include/myhtml/tokenizer.h' -> '/usr/local/include/myhtml/tokenizer.h'
    'include/myhtml/tag_const.h' -> '/usr/local/include/myhtml/tag_const.h'
    'include/myhtml/myosi.h' -> '/usr/local/include/myhtml/myosi.h'
    'include/myhtml/mystring.h' -> '/usr/local/include/myhtml/mystring.h'
    'include/myhtml/parser.h' -> '/usr/local/include/myhtml/parser.h'
    'include/myhtml/tree.h' -> '/usr/local/include/myhtml/tree.h'
    'include/myhtml/rules.h' -> '/usr/local/include/myhtml/rules.h'
    'include/myhtml/tag.h' -> '/usr/local/include/myhtml/tag.h'
    'include/myhtml/tokenizer_end.h' -> '/usr/local/include/myhtml/tokenizer_end.h'
    'include/myhtml/tokenizer_script.h' -> '/usr/local/include/myhtml/tokenizer_script.h'
    'include/myhtml/mynamespace.h' -> '/usr/local/include/myhtml/mynamespace.h'
    'include/myhtml/token.h' -> '/usr/local/include/myhtml/token.h'
    'include/myhtml/stream.h' -> '/usr/local/include/myhtml/stream.h'
    'include/myhtml/tokenizer_doctype.h' -> '/usr/local/include/myhtml/tokenizer_doctype.h'
    'include/myhtml/callback.h' -> '/usr/local/include/myhtml/callback.h'
    echo "MODEST_UNINSTALL_MK_COMMAND = rm -rf /usr/local/include/mycore \$(MODEST_UTILS_NEW_LINE) rm -rf /usr/local/include/myencoding \$(MODEST_UTILS_NEW_LINE) rm -rf /usr/local/include/myhtml \$(MODEST_UTILS_NEW_LINE) rm -rf /usr/local/lib/libmyhtml-4.dll \$(MODEST_UTILS_NEW_LINE) rm -rf /usr/local/lib/libmyhtml.dll.a \$(MODEST_UTILS_NEW_LINE)" > uninstal.mk
    
    

    Ich verstehe nicht, weshalb er libmyhtml-4.dll nicht finden kann, wenngleich libmyhtml-4.dll und libmyhtml.dll.a doch da sind. Ich verstehe auch nicht, warum er nach -4 sucht. Was soll das?

    Habe ich beim Bauen vielleicht was falsch gemacht? Abhängigkeiten vergessen oder so?

    Danke für help



  • Das sieht so aus als hättest du einfach vergessen die dll neben deine anwendung zu legen.


  • Gesperrt

    @5cript sagte in C++ Library mit Cygwin bauen und verwenden:

    vergessen die dll neben deine anwendung zu legen

    Danke, genau das wars...

    @5cript Ich dachte die ganze Zeit, die dll würde "in die exe kopiert werden". 😠

    Btw. Obige Funktion enthält einen Fehler, ich bekomme nämlich keine Ausgabe... vielleicht stimmt etwas mit Zeile 35 nicht...



  • >html parser

    spoiler, es gibt keinen html "parser". jeder der versucht html zu parsen sollte sich ein anderes hobby suchen. siehe ausserdem meinen comment im anderen thread wie man sich dynamisch kram aus dem internet fischt, oder generell kommuniziert.


  • Gesperrt

    @Cardiac sagte in C++ Library mit Cygwin bauen und verwenden:

    oder generell kommuniziert

    Kannst du das konkretisieren? Ich fürchte, ich sehe gerade den Zusammenhang zum Thema nicht.

    Es geht darum, die Überschrift eines zufälligen Wikipedia-Artikels als Suchwort zu verwenden. Bin offen für konstruktive Vorschläge, aber nicht für Beef-Macher.


  • Mod

    @Cardiac sagte in C++ Library mit Cygwin bauen und verwenden:

    spoiler, es gibt keinen html "parser". jeder der versucht html zu parsen sollte sich ein anderes hobby suchen. siehe ausserdem meinen comment im anderen thread wie man sich dynamisch kram aus dem internet fischt, oder generell kommuniziert.

    Häh? Dieses Forum benutzt du via Seance, oder wie?


  • Gesperrt

    Dieser Beitrag wurde gelöscht!

  • Gesperrt

    @SeppJ
    Kannst du das Thema nicht löschen? Ich verwende jetzt regex, anstatt diese library ... Hier gibt es zu viel Konfliktpotential und um einer weiteren Eskalation entgegenzuwirken ...


  • Mod

    Wieso sollte ich das Thema löschen? Eher lösche ich dich, nach dem du heute wieder in dein altes cyborg-Verhalten zurück gefallen bist. Das wievielte Mal wäre das? Nummer 5? Du zählst sicher besser mit als ich. Ich bin wirklich viel zu nett und sollte dich einfach jedes Mal direkt beim ersten Auftritt sperren.


Anmelden zum Antworten