CPP zu BMax compatiblität/linkbarkeit
Übersicht BlitzMax, BlitzMax NG Allgemein
Jan_Ehemaliger AdminBetreff: CPP zu BMax compatiblität/linkbarkeit |
Do, Jan 13, 2005 9:55 Antworten mit Zitat |
|
---|---|---|
Wie eventuell bekannt, bin ich in CPP ein n00b.
Darum, Kann(wenn ja, wie) ich auch die Type Code: [AUSKLAPPEN] namespace irr { namespace core { //! Rounding error constant often used when comparing f32 values. const f32 ROUNDING_ERROR = 0.0001f; //! Constant for PI. const f32 PI = 3.14159f; //! Constant for converting bettween degrees and radiants. const f64 GRAD_PI = 180.0 / 3.1415926535897932384626433832795; //! Constant for converting bettween degrees and radiants. const f64 GRAD_PI2 = 3.1415926535897932384626433832795 / 180.0; } // end namespace core }// end namespace irr nach BMax exportieren Ich hatte mir das ala Code: [AUSKLAPPEN] Extern Type irr end extern Vorgestellt. Ich konnte aber bisher kein BSP finden. |
||
between angels and insects |
Vertex |
Do, Jan 13, 2005 12:45 Antworten mit Zitat |
|
---|---|---|
Kommt ganz darauf an, wie gcc den unterschiedlichen Namespace handhabt. Es können ja mehrere Klassen den selben Namen besitzen, jedoch in unterschiedlichen Namespace. Im Grunde bindest du die Datei durch Extern "MyCPP.cpp" ein. Wenn ich zu Hause bin, teste ich das ganze mal, kann durchaus sein, dass nur Funktionen selber mit eingebunden werden können(sprich keine Methoden, Konstanten, Variablen etc.).
Müsstest dann halt deine Methoden(inklusive Konstruktor und Destruktor) nochmal zusätzlich in Funktionen einbinden, und die Konstanten in der *.bmx Datei mit definieren. mfg olli |
||
vertex.dreamfall.at | GitHub |
Jan_Ehemaliger Admin |
Do, Jan 13, 2005 12:49 Antworten mit Zitat |
|
---|---|---|
Hm, das Problem, ist aber, das die Funktionen direkt, die Eigens definierten Typen, übergeben haben wollen, und ich mir sehr unsicher bin, ob ein BMax Type, als ein CType anerkannt wird.
Ich sogar davon aufgehe, das das nciht funtioniert. |
||
between angels and insects |
Vertex |
Do, Jan 13, 2005 13:01 Antworten mit Zitat |
|
---|---|---|
Der Konstruktor selber liefert dir ja den Pointer der neuen Instanz zurück, die du in BMax als Integerwert speicher kannst. Also eine Art Handle. Das musst du dann halt an die jeweiligen Funktionen übergeben, die die Methoden mit beinhalten.
mfg olli |
||
vertex.dreamfall.at | GitHub |
Jan_Ehemaliger Admin |
Do, Jan 13, 2005 13:06 Antworten mit Zitat |
|
---|---|---|
joa, da hast du recht.
Und, kann man auhc in BB den Type selber erstellen? |
||
between angels and insects |
Vertex |
Do, Jan 13, 2005 23:58 Antworten mit Zitat |
|
---|---|---|
Habe es jetzt nochmal ausprobiert, und nein, es können nur Globale Variablen, Konstanten sowie Funktionen im Externbereich deklariert werden.
Ich habe mal das hier prbiert, jedoch findet er nicht zu 3 Funktionen warum auch immer... Test.cpp Code: [AUSKLAPPEN] // Die Klasse selber -----------------------------------------
class TCar { private: int x, y; float speed; public: void TSetX(int val); void TSetY(int val); void TSetSpeed(float val); int TGetX(void); int TGetY(void); float TGetSpeed(void); }; void TCar::TSetX(int val) { x = val; } void TCar::TSetY(int val) { y = val; } void TCar::TSetSpeed(float val) { speed = val; } int TCar::TGetX(void) { return x; } int TCar::TGetY(void) { return y; } float TCar::TGetSpeed(void) { return speed; } // ----------------------------------------------------------- // Methoden verpackt in Funktionen --------------------------- TCar *CreateTCar(void); void SetX(TCar Car, int Val); void SetY(TCar Car, int Val); void SetSpeed(TCar Car, float Val); int GetX(TCar Car); int GetY(TCar Car); float GetSpeed(TCar Car); TCar *CreateTCar(void) { TCar *Car; Car = new TCar; return Car; } void SetX(TCar Car, int Val) { Car.TSetX(Val); } void SetY(TCar Car, int Val) { Car.TSetY(Val); } void SetSpeed(TCar Car, float Val) { Car.TSetSpeed(Val); } int GetX(TCar Car) { return Car.TGetX(); } int GetY(TCar Car) { return Car.TGetY(); } float GetSpeed(TCar Car) { return Car.TGetSpeed(); } // ----------------------------------------------------------- Test.bmx: Code: [AUSKLAPPEN] Import "Test.cpp"
Extern Function CreateTCar:Int() Function SetX(Car:Int, Val:Int) Function SetY(Car:Int, Val:Int) Function SetSpeed(Car:Int, Val:Float) Function GetX:Int(Car:Int) Function GetY:int(Car:Int) Function GetSpeed:Float(Car:Int) End Extern Local MyCar:Int = CreateTCar() SetX(MyCar, 10) Print GetX(MyCar); Wobei man diese externen Funktionen wieder in einem Type vereinen könnte. In wie weit das ganze Sinn macht, ist fragwürdig. Ich pers. werde sowiso nur mit C arbeiten. mfg olli Edit: OK, in dem Sinne kanste es hacken mit C++. Anscheinend wird ausschließlich nur C unterstützt. Das sind halt die Probleme eine Hochsprache in eine andere zu integrieren. |
||
vertex.dreamfall.at | GitHub |
Nemesis |
Fr, Jan 14, 2005 8:57 Antworten mit Zitat |
|
---|---|---|
Code: [AUSKLAPPEN] // Die Klasse selber ----------------------------------------- class TCar { private: int x, y; float speed; public: void TSetX(int val); void TSetY(int val); void TSetSpeed(float val); int TGetX(void); int TGetY(void); float TGetSpeed(void); }; void TCar::TSetX(int val) { x = val; } void TCar::TSetY(int val) { y = val; } void TCar::TSetSpeed(float val) { speed = val; } int TCar::TGetX(void) { return x; } int TCar::TGetY(void) { return y; } float TCar::TGetSpeed(void) { return speed; } // ----------------------------------------------------------- // Methoden verpackt in Funktionen --------------------------- extern "C" { TCar *CreateTCar(void); void SetX(TCar Car, int Val); void SetY(TCar Car, int Val); void SetSpeed(TCar Car, float Val); int GetX(TCar Car); int GetY(TCar Car); float GetSpeed(TCar Car); TCar *CreateTCar(void) { TCar *Car; Car = new TCar; return Car; } void SetX(TCar Car, int Val) { Car.TSetX(Val); } void SetY(TCar Car, int Val) { Car.TSetY(Val); } void SetSpeed(TCar Car, float Val) { Car.TSetSpeed(Val); } int GetX(TCar Car) { return Car.TGetX(); } int GetY(TCar Car) { return Car.TGetY(); } float GetSpeed(TCar Car) { return Car.TGetSpeed(); } // ----------------------------------------------------------- } Also damit lässt sich das ding zwar ausführe aber der rückgabe wert stimmt ned. (sieht aus wie ne adresse oder so ) |
||
Übersicht BlitzMax, BlitzMax NG Allgemein
Powered by phpBB © 2001 - 2006, phpBB Group