C code einbinden (libnoise)

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

 

GrrBrr

Betreff: C code einbinden (libnoise)

BeitragDo, Jul 07, 2005 2:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Nachdem meine eigene perlin-noise-Funktion nicht allzugut funktioniert hat (aber immerhin) habe ich nun eine Lösung gefunden, die schöner ist: libnoise. (opensource library, die noise erzeugt, geschrieben in C++)

so... Die eleganteste Lösung wäre jetzt natürlich den C-Code per Modul in BMX reinzuholen. Das Problem ist, dass ich das letzte mal vor 5 Jahren C programmiert habe und keinen Schimmer habe, wie ich anfange.

Ich habe mich in das Problem reingelesen und mit import und extern allerlei experimentiert. Das Problem ist nun, dass ich nicht sicher bin, welche Dateien ich importieren muss... Kann ich eigentlich auch C in einer normalen bmx-Datei importieren oder geht das nur per Modul? Was ist der Unterschied zwischen h und cpp dateien?

Hoffentlich kann mir jemand helfen...

Hier der Link zu den libnoise Dateien ----> http://libnoise.sourceforge.ne...index.html
3D - GFX - Wallpaper - PixelArt - Galerie
>>> http://www.augensound.de <<<
 

Dreamora

BeitragDo, Jul 07, 2005 3:12
Antworten mit Zitat
Benutzer-Profile anzeigen
einfach import "source.c" in deiner bmx file und danach per extern die funktionen definieren, das wars Smile

h sind nur header also deklarationsfiles
cpp sind c++ files
c sind c files
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

GrrBrr

BeitragDo, Jul 07, 2005 7:28
Antworten mit Zitat
Benutzer-Profile anzeigen
mit cpp-dateien klappt das nicht... ?!

muss ich jetzt noch ein c programm zu zwischenschalten schreiben... ohje...
3D - GFX - Wallpaper - PixelArt - Galerie
>>> http://www.augensound.de <<<

Suco-X

Betreff: ......

BeitragDo, Jul 07, 2005 7:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Reicht die DLL nicht erstmal aus?
Würde ja selbst auch ein bisschen rumtesten, habe aber ka wie die Funktionsnamen heißen und wo ich da eine Beschreibung finde.
Mfg Suco
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB
 

GrrBrr

BeitragDo, Jul 07, 2005 8:26
Antworten mit Zitat
Benutzer-Profile anzeigen
das problem ist das diese library modular aufgebaut ist und durch und durch objektorientiert. Es scheint keine wirklichen funktionen zu geben (nur methoden innerhalb der objekte)

zumindest glaube ich das so zu erkennen, trotz meiner schlechten c++ - kenntnisse.

die dll müsste notfalls auch reichen. ich bevorzuge aber das mittels import zu lösen, um plattformunabhängig zu bleiben. und bei der dll habe ich die gleichen probleme, die konkreten funktionen zu finden, obwohl ja alles beschrieben ist... aber naja... ich werd mich aufjedenfall mal da reinknien...


auf jedenfall sind die möglichkeiten dieser library genial... so ein flexibles system zum erstellen von noise ist genial....
3D - GFX - Wallpaper - PixelArt - Galerie
>>> http://www.augensound.de <<<

Suco-X

Betreff: .......

BeitragDo, Jul 07, 2005 9:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, wird wohl ein gutes Stück Arbeit das ganze korrekt importiert zu kriegen. Du kannst Glücklicherweise auch Klassenbasierte Codes für BlitzMax aufbereiten, Siehe dazu die Language Refrence unter Advanced Topics.
Mfg Suco
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB
 

GrrBrr

BeitragDo, Jul 07, 2005 10:51
Antworten mit Zitat
Benutzer-Profile anzeigen
oh, cool, danke für den hinweis... das sieht nützlich aus, was da steht...
3D - GFX - Wallpaper - PixelArt - Galerie
>>> http://www.augensound.de <<<
 

GrrBrr

BeitragFr, Jul 08, 2005 8:01
Antworten mit Zitat
Benutzer-Profile anzeigen
oh hilfe... kennt sich jemand mit mingw aus?

wie schaff ich es diese library in mingw reinzubringen?
hier ist nur eine anlietung für gcc und ich kapiers nicht... (ganz unten) --> http://libnoise.sourceforge.ne...1.html#gcc
3D - GFX - Wallpaper - PixelArt - Galerie
>>> http://www.augensound.de <<<
 

Dreamora

BeitragFr, Jul 08, 2005 8:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Du musst die library nicht nach MingW rein bringen ...

Einfach import "libgen.c" (so hiess die source datei glaub), dann sollte es gehen. wenn nicht die andere c datei im source folder auch noch importen.

Danach musst du nur noch die Funktionen als extern neu deklarieren mit den entsprechenden Datentypen von BlitzMax
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

GrrBrr

BeitragFr, Jul 08, 2005 13:50
Antworten mit Zitat
Benutzer-Profile anzeigen
hab es probiert. Stellen sich aber neue Probleme...

Eine Klasse in der library heisst "module". Nun ist module aber ein von BlitzMax reserviertes Schlüsselwort.

Folgender Code verdeutlicht das Problem:


Code: [AUSKLAPPEN]
Import "latlon.cpp"
Import "noisegen.cpp"

Extern

Type noise

End Type

Type Module

End Type

Type Perlin Extends Module
    Method Perlin:noise.module.perlin()
    Method GetValue:double( x:Double, y:Double, z:Double)

End Type


End Extern


Local t:noise.module.perlin=noise.module.perlin.Perlin()
Print t.GetValue (1.25, 0.75, 0.5);


Gibt es eine Möglichkeit das zu umgehen ohne den gesamten C-Code umzuschreiben? Die Types müssen ja den gleichen Namen haben wie im C-Code... oder?

als ob das problem nicht schon groß genug wäre....


Oder ich schreib wirklich ein kleines C-Programm das ich zwischenschalte, dass mir nur die Werte herausholt, die ich brauche.... aber ich bekomms ja nicht hin die Library für MinGW zu compilieren... *grr*
3D - GFX - Wallpaper - PixelArt - Galerie
>>> http://www.augensound.de <<<

Suco-X

Betreff: .....

BeitragFr, Jul 08, 2005 14:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Müssen nicht den gleichen Namen haben die Funktionen und types. Kommt nur auf die richtige Reihenfolge an.
Mfg Suco
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB
 

GrrBrr

BeitragFr, Jul 08, 2005 18:01
Antworten mit Zitat
Benutzer-Profile anzeigen
huh, das sind soviele headerdateien... wie bekomme ich denn da die reihenfolge heraus??? gehe ich datei um datei durch?

in der hilfe habe ich auch gelesen ich kann direkt die header stattdessen mit *.h einbinden. welche reihenfolge wird dann verwendet?? oder auch die compilierte library als blah.a einbinden, aber dann ist die reihenfolge ja völlig unklar...


andere geschichte:

kann ich aus einer c-datei eigentlich nicht einzelne funktionen herausholen, oder muss ich die, die ich nicht brauche mit in extern deklarieren, damit die reihenfolge stimmt?

jetzt sitze ich schon 3 tage an dem problem und habe noch nichts, niente, rien, nothing erreicht... langsam bin ich am verzweifeln... Sad
3D - GFX - Wallpaper - PixelArt - Galerie
>>> http://www.augensound.de <<<

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group