AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Bug im C++-Builder?

Ein Thema von pustekuchen · begonnen am 3. Aug 2022 · letzter Beitrag vom 12. Aug 2022
Antwort Antwort
Benutzerbild von pustekuchen
pustekuchen

Registriert seit: 27. Aug 2010
265 Beiträge
 
Delphi 11 Alexandria
 
#1

Bug im C++-Builder?

  Alt 3. Aug 2022, 15:01
Hallo zusammen,

für ein Projekt verwende ich WebSocket++. Dort gibt es eine Base64 Encodierungsfunktion
Code:
base64_encode
In dieser Funktion wird auf
Code:
static std::string const base64_chars
zugegriffen. Aus irgend einem Grund zeigt base64_chars auf NULL, was eigentlich nicht der Fall sein dürfte. Die Encodierung erzeugt dann natürlich mülldaten.

In einem Testprojekt konnte ich das Szenario (Aus einer statischen inline Funktion auf einen statisch definierten string zuzugreifen) nicht nachstellen. Dort ist die Variable korrekt initialisiert.

Hat jemand eine Idee woran das liegen kann? Ist es eventuell ein Bug im bcc32c ?

Ergänzung: Der WebSocketServer wird ein einem C++-Package (BPL) verwendet, dessen Objekt in einem Delphi TThread erzeugt wird.
Miniaturansicht angehängter Grafiken
screenshot-2022-08-03-155715.jpg  
Delphi programming is awesome.

Geändert von pustekuchen ( 3. Aug 2022 um 15:18 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.345 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Bug im C++-Builder?

  Alt 3. Aug 2022, 19:04
Ins Blaue geraten, weil ich das Wort Thread gesehen habe:
Fehlt vielleicht ein CoInitializeEx? Das muss im Thread separat erfolgen, wenn es benötigt wird.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von pustekuchen
pustekuchen

Registriert seit: 27. Aug 2010
265 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Bug im C++-Builder?

  Alt 4. Aug 2022, 06:53
Das hat leider keine Besserung gebracht =( Trotzdem Danke für den Hinweis.

P.S. Ich habe mal das Beispiel von David Milligton erweitert, um diesen Fall nachzustellen.

Duplicate: https://en.delphipraxis.net/topic/72...t-initialized/
Angehängte Dateien
Dateityp: zip uninitialized_globale_var_in_cpp_package.zip (20,9 KB, 3x aufgerufen)
Delphi programming is awesome.

Geändert von pustekuchen ( 4. Aug 2022 um 07:21 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von pustekuchen
pustekuchen

Registriert seit: 27. Aug 2010
265 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Bug im C++-Builder?

  Alt 11. Aug 2022, 12:59
Hallo,

ich konnte das Problem lösen. Es fehlte ein

InitializePackage(GetModuleHandle('CPPPackage.bpl'));
Delphi programming is awesome.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.136 Beiträge
 
Delphi 12 Athens
 
#5

AW: Bug im C++-Builder?

  Alt 11. Aug 2022, 13:17
Du lädst die BPL wie eine DLL?
function CreateCppDescendant : TAbstractClass; stdcall; external 'CPPPackage.bpl';

Bzw. warum ist das eine BPL und keine DLL?



Warum wird die Anwendugn nicht mit Packages kompiliert
oder warum wird kein Delphi-Referenz durchsuchenLoadPackage benutzt?

Das external macht nur ein MSDN-Library durchsuchenLoadLibrary ... kein Wunder, wenn dabei das Package nicht richtig initialisiert wird.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von pustekuchen
pustekuchen

Registriert seit: 27. Aug 2010
265 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Bug im C++-Builder?

  Alt 11. Aug 2022, 13:47
Bzw. warum ist das eine BPL und keine DLL?
Ich hatte mich erstmal an das Beispiel von David Millington gehalten, da das Thema noch neu für mich war und ich das erstmal nicht hinterfragt habe.
Ggf. würde das auch mit einer DLL statt einem Package funktionieren.


Warum wird die Anwendugn nicht mit Packages kompiliert
oder warum wird kein Delphi-Referenz durchsuchenLoadPackage benutzt?
Naja als Delphi-Anwendung möchte ich ja eine ausführbare exe haben, die wiederum ein CPP-Package/DLL nutzt. Oder worauf möchtest du hier hinaus?
Delphi programming is awesome.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.136 Beiträge
 
Delphi 12 Athens
 
#7

AW: Bug im C++-Builder?

  Alt 11. Aug 2022, 15:26
Oder worauf möchtest du hier hinaus?
Du hast ein Package,
und die EXE wird dagegen gelinkt. (ählich wie bei dem External ... nur wenn Delphi es selber linkt, dann initialisiert es das auch gleich richtig)



Projekt-Optionen > Packages > Laufzeit-Packages verwenden = True (und in der Liste mindestens dein gewünschtes Package)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von pustekuchen
pustekuchen

Registriert seit: 27. Aug 2010
265 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Bug im C++-Builder?

  Alt 12. Aug 2022, 07:27
Damit lassen sich anscheinend nur Delphi-Packages verwenden. Es kommt die Meldung
Zitat:
E2202 Package 'CPPPackage' wird benötigt, konnte aber nicht gefunden werden.
Mit dem Process Monitor lässt sich erkennen, dass er nach der DCP Datei sucht. Die wird aber gar nicht generiert, da es sich um ein C++-Builder Package handelt.
Delphi programming is awesome.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:38 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz