Zum Inhalt springen

Klotzkopp

Mitglieder
  • Gesamte Inhalte

    9912
  • Benutzer seit

  • Letzter Besuch

  • Tagessiege

    3

Alle Inhalte von Klotzkopp

  1. Nein, das liegt am Copy-Konstruktor. std::unique_ptr ist nicht kopierbar, und das ist ganz bewusst so. Wenn du "by value" fängst, wird von dem, was du fängst, eine Kopie erzeugt. Die Lösung ist ganz einfach: Throw by value, catch by reference: throw ExceptionBase(...); catch(ExceptionBase& ex)[/code]
  2. Wir wollen keine Community sein, wo man solche Anleitungen findet. Wenn du für die fristlose Kündigung im Betrieb üben willst, wirst du dir andere Quellen suchen müssen.
  3. Pseudoprozesse wie Idle haben kein MainModule.
  4. Weil das Name Mangling in C++ nunmal notwendig ist. Der Name einer Funktion ist nur in C ein eindeutiges Unterscheidungsmerkmal. In C++ gibt es Überladung. Stell dir vor, deine DLL exportiert diese Funktionen: void foo(int); void foo(double);[/code] Wenn beide über den Namen "foo" exportiert werden, wie willst du sie unterscheiden? Wenn man eine DLL weitergibt, benutzt man in aller Regel Load-Time Dynamic Linking, man liefert also Header und Importbibliothek mit aus. Damit sieht der Benutzer nichts vom Name Mangling. Wenn du absolut Run-Time Dynamic Linking benutzen musst, und deine Funktionen nicht überladen sind, dann definiere sie als extern "C", dann unterbleibt das Name Mangling.
  5. Ein Funktionstemplate ist keine Funktion, sondern eine Vorlage für Funktionen. Du kannst nur Funktionen exportieren, keine Templates. Ein Funktionstemplate muss dort, wo es instanziiert wird, vollständig definiert sein. Das geschieht zur Compilezeit. Du kannst ein Template nicht zur Laufzeit aus einer DLL laden, es sei denn, es ist dort schon zur Compilezeit (der DLL) angelegt worden.
  6. Run-Time Dynamic Linking (Windows) Was du machst, ist Run-Time Dynamic Linking. Vorteil: Du kannst auch mit DLLs umgehen, die du nicht kennst, oder die sogar fehlen. Dafür musst du dir aber alles selbst heraussuchen. Du brauchst dafür aber weder __declspec(dllimport) noch den Header der DLL. Deine Funktion CallDllFunction wird übrigens ihrem Namen nicht gerecht, sie ruft nichts auf, sondern prüft nur den Funktionszeiger. Load-Time Dynamic Linking (Windows) Mit Load-Time Dynamic Linking bricht dein Programm beim Start mit einem Fehler ab, wenn eine benötigte DLL fehlt. Dafür kannst du die exportierten Funktionen genauso aufrufen, als wären sie lokal definiert. Dazu musst du dein Programm gegen die kleine statische Bibliothek (.lib) linken, die mit der DLL erstellt wird, die sogenannte Importbibliothek, und den DLL-Header einbinden. Weiter brauchst du nichts.
  7. Das ist falsch, das Ergebnis vom vorherigen Schritt war 1, nicht 7. Das Endergebnis stimmt dann aber wieder.
  8. Schau dir mal mit dem Dependency Walker an, wie die in der DLL exportierte Funktion wirklich heißt. Da der Name der Funktion wegen der Möglichkeit zur Überladung kein ausreichendes Unterscheidungskriterium ist, muss sich der Compiler etwas anderes einfallen lassen. Er tut dies in Form des sogannten "name mangling". Dabei werden Rückgabetyp und Parametertypen auf bestimmte Art und Weise mit dem Funktionsnamen zu einem neuen Namen verwurstet. Dieser neue Name ist es, den du bei GetProcAddress angeben müsstest. Benutzt du bewusst Run-Time Dynamic Linking? Würde Load-Time Dynamic Linking ausreichen?
  9. Es ist hilfreich, im Threadtitel die Programmiersprache zu erwähnen. Dann muss man nicht erst hineinschauen, um festzustellen, dass man nicht helfen kann
  10. Insbesondere wiederholt man alle Fehler, die Andere bereits gemacht haben. Und merkt es hoffentlich. Oder man bastelt irgendetwas zusammen, was nur so aussieht, als ob es tut. Nochmals der Hinweis, den du offenbar nicht befolgt hast: Informiere dich, wie TLS funktioniert. Im Ernst. Du kannst dir in Jahrzehnten gesammelte Erkenntnisse der Kryptographie nicht durch Ausprobieren aneignen.
  11. Nein. Informiere dich bitte, wie TLS funktioniert.
  12. Warum hältst du das für nutzlos? Was ist der Anwendungsfall?
  13. Eine IP-Adresse besteht aus einem Netzanteil (vorne) und einem Hostanteil (hinten). Die Subnetzmaske gibt an, wieviele Bits der Adresse zum Netzanteil gehören. Alle Hosts, bei denen die Adressbits im Netzanteil gleich sind, gehören zum selben Netz. Du hast ein vorgegebenes Netz mit Maske /22, d.h. die ersten 22 Bits der Adresse bestimmten dein Netzwerk und sind damit für dich fest. Dieses Netz sollst du weiter unterteilen, in 5 kleinere Netzwerke. Dies tust du, indem du den Netzanteil der Adresse vergrößerst. Die ersten 22 Bits sind immer noch fest, aber von den restlichen nimmst du ein paar, um deine Subnetze zu adressieren. Bleibt noch zu ermitteln, wieviele Bits du dafür brauchst. Jedes Bit kann 2 Zustände annehmen. Mit einem einzigen zusätzlichen Bit könntest du also 2 Subnetze unterscheiden. Reicht nicht. Mit 2 Bits könntest du 2^2 = 4 Subnetze adressieren. Reicht immer noch nicht. Mit 3 Bits kannst du 2^3 = 8 Subnetze bilden. Das reicht. Also erweiterst du deine Subnetzmaske um 3 Bits von /22 auf /25. Das ist übrigens nicht die einzige Lösung für diese Aufgabe. Es wurde nicht verlangt, dass alle Subnetze gleich groß sein müssen, und es wurde auch nicht verlangt, dass der gesamte verfügbare Adressbereich vergeben werden muss, oder dass die Subnetze eine gewisse Größe haben müssen. Aber das ist vermutlich die erwartete Lösung. Bitte auch den Sticky beachten: http://www.fachinformatiker.de/networking-technologies/34655-subnetting-beide-varianten-subnetzberechnung-rfc950-rfc1878-upd-21-2-09-a.html
  14. Ist dir klar, warum man die Maske um 3 Bits erweitern muss?
  15. /22 um 3 Bits erweitern -> /25
  16. Ich verweise dezent auf meine Signatur Für die Zukunft: Zeig nicht nur den relevanten Code, sondern beschreibe außerdem sowohl das gewünschte als auch das beobachtete Verhalten, so genau wie möglich.
  17. Hallo und Willkommen auf dem Board Ja dann probier das doch mal aus. Oder was ist deine Frage?
  18. Es kann sein, dass du überhaupt nichts übersetzen musst. Mit passenden Compilern solltest du das direkt zusammenlinken können.
  19. Niemals WM_PAINT selbst senden. Benutz InvalidateRect, natürlich auch als Reaktion auf WM_SIZE.
  20. Nicht ganz. Ein reinterpret_cast kann beispielsweise kein const oder volatile entfernen. Reinterpret_cast ist hässlich, aber manchmal braucht man ihn doch. Und noch eins hat der dem C-Cast voraus: Man erkennt ihn sofort, er ist ein Warnsignal.
  21. Gib bei open das Flag ios::binary an, sonst werden beim Schreiben die Zeilenwechsel automatisch umgewandelt. Eigentlich solltest du gar nicht open benutzen, sondern die Parameter gleich dem Konstruktor übergeben. Und flush und close kannst du weglassen, darum kümmert sich der Stream-Destruktor.
  22. Danke für die Meldung, wir kümmern uns drum.
  23. Das heißt, ein Konkurrent soll dir seinen Konfigurator zur Verfügung stellen?
  24. Bei mir funktioniert er tadellos, aber was heißt das schon? Wo hast du denn schlechte Bewertungen gefunden? Bei amazon schneidet er eher gut ab.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...