CTString einbinden
Übersicht

![]() |
Der EisvogelBetreff: CTString einbinden |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo
Ich arbeite derzeit daran eine Funktion eines andere Programms aufzurufen, die als Parameter 2 Klassen des Types CTString erwartet. Leider scheitere ich daran eine Objekt der Klasse mittels der im Fremd-Programm enthaltenen Funktionen zu erstellen. Kann ich die Klasse CTString irgendwie selbst in BlitzMax implementieren, sodass ich die Objekte der Klasse an die Funktion reichen kann? Hier die Doku zu der Klasse: http://www-sop.inria.fr/orion/...tring.html MfG Der Eisvogel |
||
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB Projekte: Window-Crasher Ich liebe es mit der WinAPI zu spielen. |
![]() |
blackgecko |
![]() Antworten mit Zitat ![]() |
---|---|---|
Schau mal in der Hilfeleiste der BlitzMax IDE unter Help>Language>Advanced Topics>Interfacing with C
Ein bisschen runterscrollen, dann steht da Zitat: Extern can also be used to work with C++ style objects from within BlitzMax.
Das könnte dir vielleicht helfen. |
||
So long and thanks for all the fish.
Fedora 17 | Windows 7 || BlitzPlus | BlitzMax Rechtschreibflame GO!!! Deppenapostroph | SeidSeit | Deppenakzent | DassDas | Deppenleerzeichen | TodTot | enzigste.info - Ja, ich sammel die. |
![]() |
Der Eisvogel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja das weiß ich, jedoch weiß ich nicht wie ich jetzt CTString einbinden kann, weil ich den Source erstens nicht finde und zweitens weiß ich bisher nur wie man auch Funktionen von zugreifen kann, aber nicht auf Klassen und Methode in C++. | ||
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB Projekte: Window-Crasher Ich liebe es mit der WinAPI zu spielen. |
![]() |
BtbN |
![]() Antworten mit Zitat ![]() |
---|---|---|
BMax unterstützt nur speziell angepasste klassen, es ist unmöglich, diese Klasse von BMax aus zu instanzieren. | ||
![]() |
Farbfinsternis |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du kannst die Methoden der Klasse mittels eines C-Interface aufdröseln und in BMax dann die Klasse nachbauen. Anders geht es nicht. | ||
Farbfinsternis.tv |
![]() |
Der Eisvogel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das übersteigt dann leider meine Fähigkeiten seiten C++. | ||
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB Projekte: Window-Crasher Ich liebe es mit der WinAPI zu spielen. |
![]() |
Farbfinsternis |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wenn das Deine Fähigkeiten übersteigt ... was dachtest Du würde BMax da für Dich tun? Hole Dir ein Objekt der Klasse in einer C-Funktion (CTInit() oder initCT() oder ... whatever), sichere das Objekt in BMax und übergebe es jeder C Funktion die Methoden dieses Objekts aufruft. | ||
Farbfinsternis.tv |
![]() |
Der Eisvogel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Weiß denn jemand wo man den kompletten Source von der Library downloaden kann? Google spuckt dazu irgendwie nicht viel aus, sondern zeigt mir immer nur Ergebnisse für CString. Was andere als die obene genannte Referenz find ich nicht. Da jede einzelen Datei runterzuladen dauert ewig. | ||
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB Projekte: Window-Crasher Ich liebe es mit der WinAPI zu spielen. |
![]() |
Farbfinsternis |
![]() Antworten mit Zitat ![]() |
---|---|---|
[EDIT]Hatte hier eine Liste gepostet, die Klasse war da aber nicht dabei ... sry[/EDIT]
Ich habe mir das jetzt mal angeschaut. Die Klasse CTString ist Teil einer Engine und wird von CTObject abgeleitet. Das heißt dass Du etwas mehr Arbeit hast wenn Du das porten willst. Was soll das überhaupt bringen? Was kann diese Klasse was BMax nicht selbst könnte oder was man auf keinen Fall selbst implementieren könnte? |
||
Farbfinsternis.tv |
![]() |
Der Eisvogel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich brauch diese Klasse um sie in Verbindung mit einer Funktion eines fremde Prozesses aufzurufen.
Die Funktion erwartet 2 Parameter der Klasse CTString. Daran kann ich auch nichts ändern, da es, wie gesagt, ein fremdes Programm ist, dessen Funktion ich aufrufen möchte. Der Funktionsaufruf selbst ist nicht das Problem. Andere Funktionen die Paramter wie Integer enthalten kann ich Problemlos verwenden, nur eben jene mit CTString nicht. Deswegen bräuchte ich eine Implementation der Klasse. |
||
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB Projekte: Window-Crasher Ich liebe es mit der WinAPI zu spielen. |
![]() |
Farbfinsternis |
![]() Antworten mit Zitat ![]() |
---|---|---|
Dann erzähle uns bitte welche Funktion das ist und wo sie hingehört ... wenn man den Kontext kennt kann man sicher besser helfen. Also: Was willst Du erreichen und wie hast Du es bisher versucht. | ||
Farbfinsternis.tv |
![]() |
Noobody |
![]() Antworten mit Zitat ![]() |
---|---|---|
Farbfinsternis hat Folgendes geschrieben: Du kannst die Methoden der Klasse mittels eines C-Interface aufdröseln und in BMax dann die Klasse nachbauen. Anders geht es nicht.
Stimmt nicht. In BMax kann man ohne weiteres C++-Klassen einbinden, indem man einfach den Type in den Extern-Block stellt (siehe Dokumentation "Advanced Topics -> Interfacing with C"). Der einzige Zusatzaufwand ist, dass man C++-Funktionen braucht, um den Type zu instanzieren und wieder zu löschen, was aber erheblich einfacher ist, als den ganzen Type zu wrappen. Das gesamte Pub.DirectX-Modul wurde zum Beispiel so umgesetzt (einfach lauter Types in Extern-Blöcken). Jede der über 300 Methoden von Hand in C zu wrappen wäre eine unmenschliche Arbeit gewesen. |
||
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun |
![]() |
BtbN |
![]() Antworten mit Zitat ![]() |
---|---|---|
BMax Klassen mapping funktioniert nur, wenn sämmtliche methoden virtual sind, was sie im fall der CTString klasse nicht sind.
Mit DirectX funktioniert das, weil es COM objekte sind, die sich nochmal anders verhalten. |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group