Seite 2 von 2
Re: C-Wrapper für PureBasic
Verfasst: 01.05.2010 14:28
von Mok
Irgendwie will ich's nicht kapieren...
Ich habe die Datei test.txt und will sie in einem Archiv namens test.lzm speichern. Wie genau soll ich das jetzt machen? Und wie soll ich im voraus überhaupt die 'Zielgröße' wissen?
Edit: In 7z.dsw wird aber keine der anderen .c-Dateien (GZip.c, Rar.c, usw.) irgendwie inkludiert

Re: C-Wrapper für PureBasic
Verfasst: 01.05.2010 15:08
von milan1612
Die Library arbeitet nicht mit Dateien sondern direkt mit im Speicher abgelegten Daten.
Wenn du also Dateien komprimieren willst, musst du diese erst in den Speicher einlesen.
Fuer die Zielgroesse nimmst du die Groesse der Quelldaten. Der Aufruf von LzmaCompress
gibt dir dann die wirklich gebrauchte Groesse zurueck, damit kannst du deinen Zielbuffer
dann auf die richtige Groesse verkleinern.
Re: C-Wrapper für PureBasic
Verfasst: 01.05.2010 15:14
von Mok
milan1612 hat geschrieben:Die Library arbeitet nicht mit Dateien sondern direkt mit im Speicher abgelegten Daten.
Wenn du also Dateien komprimieren willst, musst du diese erst in den Speicher einlesen.
Die Lib arbeitet aber mit Strings (char*), daher kann ich keinen Buffer übergeben.
PS:
Mok hat geschrieben:In 7z.dsw wird aber keine der anderen .c-Dateien (GZip.c, Rar.c, usw.) irgendwie inkludiert
Re: C-Wrapper für PureBasic
Verfasst: 01.05.2010 16:10
von milan1612
Mok, char ist in C der kleinste verfuegbare Datentyp und ein unsigned char entspricht einem Byte.

Hat also nicht automatisch was mit Strings zu tun...
Bei deiner anderen Frage weiss ich jetzt auch nicht weiter, probier halt ein bisschen rum.
Re: C-Wrapper für PureBasic
Verfasst: 01.05.2010 17:06
von Mok
milan1612 hat geschrieben:Mok, char ist in C der kleinste verfuegbare Datentyp und ein unsigned char entspricht einem Byte.

Immer diese Sparsamkeit

Und kann ich size_t als Integer bzw. Long behandeln?
Re: C-Wrapper für PureBasic
Verfasst: 01.05.2010 17:14
von ts-soft
Als Integer!
Desweiteren solltest Du mal in diesen Source schauen:
http://www.purebasic.fr/english/viewtop ... 64#p316764
Re: C-Wrapper für PureBasic
Verfasst: 01.05.2010 17:17
von Mok
Ach du Kacke! Jetzt hock ich schon 1,5 Tage bei dem Gedöns, statt dass ich mir einen bereits vorhanden Wrapper lade

Re: C-Wrapper für PureBasic
Verfasst: 01.05.2010 17:22
von ts-soft
Mok hat geschrieben:Ach du Kacke! Jetzt hock ich schon 1,5 Tage bei dem Gedöns, statt dass ich mir einen bereits vorhanden Wrapper lade
Ich dachte, Du möchtest was lernen, sonst hätte ich den Link schon früher gepostet
Mok hat geschrieben:Edit: Was muss ich denn mit den .LIB-Dateien machen? Werden die wie DLLs behandelt?
Die machen eine DLL überflüssig. Wenn Du lieber eine DLL nutzen möchtest, machste aus dem Import
Prototypes oder nimmst die ImportLib der DLL (die ersetzt die DLL nicht).
Re: C-Wrapper für PureBasic
Verfasst: 01.05.2010 17:46
von Mok
ts-soft hat geschrieben:Mok hat geschrieben:Edit: Was muss ich denn mit den .LIB-Dateien machen? Werden die wie DLLs behandelt?
Die machen eine DLL überflüssig. Wenn Du lieber eine DLL nutzen möchtest, machste aus dem Import
Prototypes oder nimmst die ImportLib der DLL (die ersetzt die DLL nicht).
Geht's auch anders rum? Also aus einer DLL eine LIB machen?
Re: C-Wrapper für PureBasic
Verfasst: 01.05.2010 17:58
von ts-soft
Mok hat geschrieben:Geht's auch anders rum? Also aus einer DLL eine LIB machen?
Du mußt vor dem Compilieren des Sources (lzma) bestimmen, ob Du eine statische Lib
oder eine dynmaische DLL haben möchtest, vorausgesetzt es ist beides mit dem Source
möglich.
Eine statische Lib macht die DLL überflüssig, sie wird zur Exe hinzugelinkt.
Beim erstellen einer DLL wird auch eine statische Lib erzeugt (etwas kleiner als obige)
welche keine Funktionen enthält, sondern nur die Funktionsadressen, welche eine frühe
Bindung zur DLL ermöglicht (so wie PB es mit den API-DLLs macht).
Für weiteren Infos solltest Du dann googlen oder wikepedia bemühen
