Zweiter Link liefert mir leider nur die fertige Executable. Ich möchte die Quellen ja selbst in meinem Programm verwenden.
Ich möchte die Lib in meinem Quellcode einbinden und deren Schnittstellen benutzen, um mich bspw. mit einem Server zu verbinden. Toolchain benutze ich die von AVR, MinGW mit GCC wie angesprochen.
/edit: Quark, falsches System. Ich möchte die Quellen gerne in Qt einbinden.
Zitat von Tata
Das sind zwei unterschiedliche Dinge! Du kannst eine kompilierte lib auch nutzen ohne die quellen dazu zu haben (nur header brauchst du).
Die Frage ging Richtung Compiler / Standardbibliotheken.
Ist dir klar, dass es von Microsoft entsprechende LDAP Schnittsellen gibt?
Achtung Spoiler:
Da habe ich mich falsch ausgedrückt: ich meinte das Einbinden der Lib auch mit der Möglichkeit dies nur über den Header zu bewerkstelligen.
Gerade gesehen, dass es da keinen Qt-Standard gibt. Das mit Microsoft ist mir in der Tat neu. Wie kommt ich an diese Libs? Sind die im SDK enthalten?
Zitat von Tata
Ich konnte das Problem mittlerweile lösen. Der Umweg über openLdap ist natürlich nicht nötig, man kann einfach die Windows Implementierung benutzen. Bisschen kniffelig war das Linken unter Qt, aber eigentlich nur der normale Wahnsinn
Danke nochmal Zulan!
Zitat von Tata
Hat jemand von euch zufällig Erfahrung mit Mingw64 und libtools? (Verwende MSys2.)
Wollte eine DLL erstellen zu einer nicht mir erstellten Bibliothek (genauer gesagt NTL). Habe mich da an die Anweisungen gehalten, aber beim linken meckert libtools rum von wegen nicht aufgelösten Symbolen, und kann deswegen nicht die DLL erstellen.
Betz
Freedom's just another word for nothing left to lose
Gerade wo ich es heute noch gelesen habe
C++ Core Guidelines
Zitat von Tata
|學而不思則罔,思而不學則殆。 ~ 孔子|
| Lernen ohne zu denken ist sinnlos, denken ohne zu lernen gefährlich. ~ Kong Zi |
| During times of universal deceit, telling the truth becomes a revolutionary act ~ George Orwell |
SdM Dez16 - XCOM2 Make Humanity Great again
Ich hab auch eher drin rumgeblättert. Einige gute Ideen sind drin, das Dokument ist aber auch noch in der Alpha-Phase und eher eine Referenz.
Zitat von Tata
...also, ich hab vor ein paar Tagen mal etwas profiled. Geht um ein Programm, was ein physikalisches Modell simuliert.
Da waren ein paar Überraschungen drin: Die Routine, die Observablen aufnimmt, macht ungefähr 10^7 Aufrufe von sin() und cos(). Hat knapp eine Sekunde gedauert. Fand ich ziemlich beeindruckend. Und auch ansonsten waren ein paar Stellen, wo ich dachte dass es vielleicht Engpässe sind, echt schnell.
Kann sich einer erklären, warum das so schnell ist? 10^7 pro Sekunde sind 10 Megahertz, dh bei einem 3GHz-Prozessor sind das gerade mal 300 CPU-Takte, für einmal sin/cos. Bisschen Buchhaltung ist auch noch außen rum, Schleifen hochzählen und was dereferenzieren. Vielleicht eher so 100 Takte.
Mit Naturgesetzen kann man nicht verhandeln. --Harald Lesch
Ein Atomkrieg würde die Menschheit auslöschen. Hätte aber auch Nachteile.
Kommt ein bisschen auf die Programmiersprache an. Hättest du die Schleife in Python geschrieben würde sie wahrscheinlich eher 2 Minuten laufen
Aber wenn du von Dereferenzieren sprichst ist es wohl C oder sowas, und die Sprache ist gut für Gleitkomma-Operationen. Ich hab keine Ahnung wie die üblichen Bibliotheken die Winkelfunktionen implementiert haben, aber es ist sicher auf Geschwindigkeit optimiert, sodass pro Aufruf wohl nur rund 10 Additionen und Multiplikationen nötig sein werden.
Kannst ja in die Quellcodes einer libm-Implementation gucken Das sind letztlich alles die Funktionen in denen Jahrzehnte an Optimierung stecken. Oft eine Kombination schnellen Abstiegsverfahren und guten Einstiegspunkten, wo das Verfahren schnell konvergiert.
Aber muss man sich immer im Speziellen anschauen...
Dazu ein Mix aus fancy Bit-Operationen
...also, ja ist C. Mit ein paar C++ Dingern, Zufallsgenerator und vector<>.
Wenn ich das Profil richtig gelesen habe, wurden da sin und cos sogar inlined. Während gleichzeitig sowas
nicht inlined wurde.Code://Index-Wrapping mit Boundary Check int iw(int i, int j){ if (i < 0 || j < 0 || i > field_max || j > field_max){ cout << "Fehler: Out of Bounds!" << endl; return -1; } return j + i*field_max; }
Mit Naturgesetzen kann man nicht verhandeln. --Harald Lesch
Ein Atomkrieg würde die Menschheit auslöschen. Hätte aber auch Nachteile.