Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   C++ Bug im C++-Builder? (https://www.delphipraxis.net/211149-bug-im-c-builder.html)

pustekuchen 3. Aug 2022 15:01

Bug im C++-Builder?
 
Liste der Anhänge anzeigen (Anzahl: 1)
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.

jaenicke 3. Aug 2022 19:04

AW: Bug im C++-Builder?
 
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.

pustekuchen 4. Aug 2022 06:53

AW: Bug im C++-Builder?
 
Liste der Anhänge anzeigen (Anzahl: 1)
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/

pustekuchen 11. Aug 2022 12:59

AW: Bug im C++-Builder?
 
Hallo,

ich konnte das Problem lösen. Es fehlte ein

Delphi-Quellcode:
InitializePackage(GetModuleHandle('CPPPackage.bpl'));

himitsu 11. Aug 2022 13:17

AW: Bug im C++-Builder?
 
Du lädst die BPL wie eine DLL?
Delphi-Quellcode:
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
Delphi-Quellcode:
external
macht nur ein MSDN-Library durchsuchenLoadLibrary ... kein Wunder, wenn dabei das Package nicht richtig initialisiert wird.

pustekuchen 11. Aug 2022 13:47

AW: Bug im C++-Builder?
 
Zitat:

Zitat von himitsu (Beitrag 1510030)
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.


Zitat:

Zitat von himitsu (Beitrag 1510030)
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?

himitsu 11. Aug 2022 15:26

AW: Bug im C++-Builder?
 
Zitat:

Zitat von pustekuchen (Beitrag 1510032)
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)

pustekuchen 12. Aug 2022 07:27

AW: Bug im C++-Builder?
 
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.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:21 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