C++ to PB

Fragen zu allen anderen Programmiersprachen.
Dare Devil
Beiträge: 237
Registriert: 17.10.2008 18:24
Kontaktdaten:

C++ to PB

Beitrag von Dare Devil »

Hallo,
hab aus Spass und Uebung (um meine eingerosteten C++-Kenntnisse wieder aufzufrischen) ein kleines Programm geschrieben, dass HTML-Code aus PB-Code generiert (Syntaxhighlighting) ... Aus diesem kleinen Projekt ist jetzt ein ziemlich umfangreiches geworden mit sehr vielen Einstellungsmoeglichkeiten - und ich bin wirklich sehr zufrieden damit.
Da das ganze aber nur unter Konsole funktioniert (meine WinAPI-Kenntnisse sind sehr schwach ...), dachte ich mir ich nutz meine in C++ geschriebenen Funktionen und setze sie in PB ein ... Dann muss ich nur eine schoene GUI dafuer entwickeln...
Wie stelle ich das an? Wuerde gern darauf verzichten eine DLL zu erstellen, da ich das alles in einer EXE gepackt haben will. Gibts da irgendwelche Moeglichkeiten?

Ich nutze VC++ 2008 Express ...
Bild + Bild

Bild
Benutzeravatar
DrShrek
Beiträge: 1970
Registriert: 08.09.2004 00:59

Beitrag von DrShrek »

sollte sehr einfach sein:

UI in PureBasic
Aufruf aus den UI mittels RunProgram <para1> <para2 <paraN>
Siehste! Geht doch....?!
PB*, *4PB, PetriDish, Movie2Image, PictureManager, TrainYourBrain, ...
Dare Devil
Beiträge: 237
Registriert: 17.10.2008 18:24
Kontaktdaten:

Beitrag von Dare Devil »

Nunja,
das waer ne Moeglichkeit. Allerdings hab ich dann 2 EXE-Dateien und ich will ja alles in einer integriert haben ...

Gibts denn echt keine andere Moeglichkeit?
Bild + Bild

Bild
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Include Binary, zweite Exe temporär entpacken, am besten nach temp und
am ende löschen.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag von edel »

Natuerlich, du erstellst einfach eine statische Lib. Musst deine Funktionen
dann aber als C Funktionen exportieren.

Code: Alles auswählen

extern "C" void bla()
{

}
Eventuell musst du auch die neue Runtime mit einbinden (MSVCRT), PB
nutzt nur Version 6, VC++ 2008 aber Version 9. Bei dem Erstellen der Lib,
solltest du erst einmal alle Optimierungen deaktivieren.
Dare Devil
Beiträge: 237
Registriert: 17.10.2008 18:24
Kontaktdaten:

Beitrag von Dare Devil »

edel hat geschrieben:Natuerlich, du erstellst einfach eine statische Lib. Musst deine Funktionen
dann aber als C Funktionen exportieren.

Code: Alles auswählen

extern "C" void bla()
{

}
Eventuell musst du auch die neue Runtime mit einbinden (MSVCRT), PB
nutzt nur Version 6, VC++ 2008 aber Version 9. Bei dem Erstellen der Lib,
solltest du erst einmal alle Optimierungen deaktivieren.
Cool!
Hab da gleich mal einpaar Fragen ... kenne mich da nich so sonderlich gut aus, also bitte um Verstaendnis :wink:

1. Wie meinst du das mit ich muss alle Funktionen als C-Funktionen exportieren? Bedeutet das, ich darf kein standardkomformes C++ verwenden und darf nur C-Funktionen verwenden? Zumal ich ja absolut keine Ahnung von C habe ... :(

2. Wenn sieht dann die Benutzung dieser "statischen Lib" unter PB aus?

3. Wuerde sich das letzter Problem aufheben, wenn ich eine aelter VC++-Version installiere und damit die Lib erstelle? (hab naemlich noch VC++ 6.0 Standard zu Hause, dass ich vor etlichen jahren gekauft habe)
Bild + Bild

Bild
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag von edel »

Ja VC++ V6 ist optimal fuer PB. Zumindest fuer x86. Den Kompiler
nutze ich auch. Die IDE ist dafuer aber ein Graus.

Du kannst natuerlich soviel C++ schreiben wie du lustig bist, PB kann
aber nichts mit C++ Funktionen anfangen. Also musst du sie als C
Funktion exportieren. In der Regel reicht dafuer ein ' extern "C" '
am Funktionskopf.

In PB kannst du sie dann so importieren :

Code: Alles auswählen

Import "deinelib.lib"
  deineFunktion(param,bla)
EndImport 
Oder ImportC wenn du cdecl eingestellt hast.
Dare Devil
Beiträge: 237
Registriert: 17.10.2008 18:24
Kontaktdaten:

Beitrag von Dare Devil »

Ok, dankeschoen :allright: - werd das gleich mal ausprobieren und mich im Problemfall nochmal melden :)
Bild + Bild

Bild
Dare Devil
Beiträge: 237
Registriert: 17.10.2008 18:24
Kontaktdaten:

Beitrag von Dare Devil »

Ok ... VC6 scheidet schonmal aus, da wirklich absolut gar nichts funktioniert /:-> Ich hab ja gewusst, dass VC6 nicht standardkomform ist - aber gleich so /:-> :(
Wie laesst sich das ueber VC2008 Express loesen? Und was genau muss ich machen, damit das ganze unter PB funktioniert?
Bild + Bild

Bild
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag von edel »

Was ist das eigentlich fuer ein Projekt, CLR oder Win32?
Antworten