C++ Library mit Cygwin bauen und verwenden
-
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, wenngleichlibmyhtml-4.dll
undlibmyhtml.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.
-
@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.
-
@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.
-
@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?
-
Dieser Beitrag wurde gelöscht!
-
@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 ...
-
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.