cpp-Module in PureBasic einbauen
-
- Beiträge: 328
- Registriert: 06.06.2013 20:37
- Computerausstattung: Satellite A210-19Z, Samsung Netbook N130, VPAD10
cpp-Module in PureBasic einbauen
Hallöchen,
habe einige C++ Module die ich gerne in PB einbauen würde:
https://github.com/puku0x/cvdrone/tree/ ... rc/ardrone
Dazu habe ich diesen Beitrag gefunden:
http://www.purebasic.fr/german/viewtopi ... &hilit=cpp
und zum Aufruf:
http://www.purebasic.fr/german/viewtopi ... &hilit=cpp
Jetzt die Frage, da die Beiträge ja schon etwas ältern sind, ist das noch aktuell oder gibt es noch andere Möglichkeiten?
Wie würdet ihr das machen?
Wie verwende ich die ardrone.h -Datei, da ja da weitere *.h aufgerufen werden?
LG
Wolfgang
habe einige C++ Module die ich gerne in PB einbauen würde:
https://github.com/puku0x/cvdrone/tree/ ... rc/ardrone
Dazu habe ich diesen Beitrag gefunden:
http://www.purebasic.fr/german/viewtopi ... &hilit=cpp
und zum Aufruf:
http://www.purebasic.fr/german/viewtopi ... &hilit=cpp
Jetzt die Frage, da die Beiträge ja schon etwas ältern sind, ist das noch aktuell oder gibt es noch andere Möglichkeiten?
Wie würdet ihr das machen?
Wie verwende ich die ardrone.h -Datei, da ja da weitere *.h aufgerufen werden?
LG
Wolfgang
Satellite A210-19Z, Samsung N130, VPAD10, WinXP, Win7, PuppyLinux, PB 5.24, 5.31. 5.70
Elektronik, Mikrocontroller, CNC-Technik, 3D-Druck
Elektronik, Mikrocontroller, CNC-Technik, 3D-Druck
Re: cpp-Module in PureBasic einbauen
Der Code exportiert keine C Funktionen, da wirst du es schwer haben den in pb einzubinden.
Da wirst du dir wohl einen Wrapper schreiben muessen.
Da wirst du dir wohl einen Wrapper schreiben muessen.
-
- Beiträge: 328
- Registriert: 06.06.2013 20:37
- Computerausstattung: Satellite A210-19Z, Samsung Netbook N130, VPAD10
Re: cpp-Module in PureBasic einbauen
Ok und wie?edel hat geschrieben:Der Code exportiert keine C Funktionen, da wirst du es schwer haben den in pb einzubinden.
Da wirst du dir wohl einen Wrapper schreiben muessen.
Satellite A210-19Z, Samsung N130, VPAD10, WinXP, Win7, PuppyLinux, PB 5.24, 5.31. 5.70
Elektronik, Mikrocontroller, CNC-Technik, 3D-Druck
Elektronik, Mikrocontroller, CNC-Technik, 3D-Druck
Re: cpp-Module in PureBasic einbauen
Den C++ Code als DLL kompilieren (bzw gleich die Binary runterladen, falls angeboten) und dann mit den entsprechenden Parametern die Funktionen dieser DLL aufrufen. Die benötigten Konstanten und Parametertypen stehen in der/den Headerdatei(en) (*.h)
Sehen aber ganz schön umfangreich aus. Wird einiges an Arbeit.
Sehen aber ganz schön umfangreich aus. Wird einiges an Arbeit.
Signatur und so
Re: cpp-Module in PureBasic einbauen
Erstmal benoetigst du ein Objekt der Klasse. Das kannst du z.B. so machen:
Wenn du jetzt in pb den Wrapper importierst und die Funktion "Hubschrauber()" aufrufst, bekommst du das Objekt zurueck. Um auf die Funktionen des Objektes zugreifen zu koennen, musst du noch die Funktionen exportieren.
Wenn das hier die Klasse waere
koenntest du es so machen :
in PB kannst du das dann so ansprechen :
Code: Alles auswählen
extern "C" Hubschrauber* Hubschrauber()
{
return new Hubschrauber();
}
Wenn das hier die Klasse waere
Code: Alles auswählen
class Hubschrauber
{
bool isKaputt();
}
Code: Alles auswählen
extern "C" Hubschrauber* Hubschrauber_new()
{
return new Hubschrauber();
}
extern "C" bool Hubschrauber_isKaputt(Hubschrauber* fly)
{
return fly->isKaputt();
}
Code: Alles auswählen
fly = Hubschrauber_new()
debug Hubschrauber_isKaputt(fly)
Nein, muss er nicht, da die Klasse das alles regelt, welche auch recht ueberschaubar ist. Mit ein wenig C++ Kenntnisse sollte das keine grosse Arbeit sein.Derren hat geschrieben:Den C++ Code als DLL kompilieren (bzw gleich die Binary runterladen, falls angeboten) und dann mit den entsprechenden Parametern die Funktionen dieser DLL aufrufen. Die benötigten Konstanten und Parametertypen stehen in der/den Headerdatei(en) (*.h)
Sehen aber ganz schön umfangreich aus. Wird einiges an Arbeit.
Zuletzt geändert von edel am 16.01.2014 22:26, insgesamt 1-mal geändert.
-
- Beiträge: 328
- Registriert: 06.06.2013 20:37
- Computerausstattung: Satellite A210-19Z, Samsung Netbook N130, VPAD10
Re: cpp-Module in PureBasic einbauen
Das wären dann diese Dateien?Derren hat geschrieben:Den C++ Code als DLL kompilieren (bzw gleich die Binary runterladen, falls angeboten) und dann mit den entsprechenden Parametern die Funktionen dieser DLL aufrufen. Die benötigten Konstanten und Parametertypen stehen in der/den Headerdatei(en) (*.h)
Sehen aber ganz schön umfangreich aus. Wird einiges an Arbeit.
https://github.com/puku0x/cvdrone/tree/ ... bin/vs2012
Satellite A210-19Z, Samsung N130, VPAD10, WinXP, Win7, PuppyLinux, PB 5.24, 5.31. 5.70
Elektronik, Mikrocontroller, CNC-Technik, 3D-Druck
Elektronik, Mikrocontroller, CNC-Technik, 3D-Druck
- NicTheQuick
- Ein Admin
- Beiträge: 8809
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
Re: cpp-Module in PureBasic einbauen
Um Klassen zu nutzen, kann man normalerweise auch in PB einfach Interfaces definieren und dann an ein Objekt dieser Klasse, das natürlich aus der DLL kommt, hängen.
-
- Beiträge: 328
- Registriert: 06.06.2013 20:37
- Computerausstattung: Satellite A210-19Z, Samsung Netbook N130, VPAD10
Re: cpp-Module in PureBasic einbauen
Hast du dafür mal ein kurzes Beispiel?NicTheQuick hat geschrieben:Um Klassen zu nutzen, kann man normalerweise auch in PB einfach Interfaces definieren und dann an ein Objekt dieser Klasse, das natürlich aus der DLL kommt, hängen.
Habe mich bisher erfolgreich um Klassen und Objektprogrammierung herumgemogelt

Satellite A210-19Z, Samsung N130, VPAD10, WinXP, Win7, PuppyLinux, PB 5.24, 5.31. 5.70
Elektronik, Mikrocontroller, CNC-Technik, 3D-Druck
Elektronik, Mikrocontroller, CNC-Technik, 3D-Druck
- NicTheQuick
- Ein Admin
- Beiträge: 8809
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
Re: cpp-Module in PureBasic einbauen
Huch, hab den Post gerade erst wieder gesehen.
Also leider habe ich gerade kein Beispiel dafür, aber es gibt ja nicht umsonst die ganzen vordefinierten Interfaces in PB, die man im Structure-Viewer sehen kann. Für Linux scheint es da gar nichts vordefiniert zu geben, für Windows glaube ich aber schon.
Also leider habe ich gerade kein Beispiel dafür, aber es gibt ja nicht umsonst die ganzen vordefinierten Interfaces in PB, die man im Structure-Viewer sehen kann. Für Linux scheint es da gar nichts vordefiniert zu geben, für Windows glaube ich aber schon.
Re: cpp-Module in PureBasic einbauen
Die Klasse muss sich dafuer aber auch eignen. Um ein Wrapper kommt er hier nicht herum.