zlib einbinden?



  • Also ich kenne mich mit p/Invoke nicht so aus. Willst Du nicht lieber mal nach DotNet-Versionen der zlib-Library googlen? SharpZipLib?

    http://www.icsharpcode.net/OpenSource/SharpZipLib/



  • Woran liegt das. Kann ich überhaupt unmanaged also keine .NET Bibliotheken in .NET benutzen(wie z.B. Boost oder QT?), oder kann ich vielleicht die externen Aufrufe der C Codes nicht benutzen?

    Ja, man kann unmanaged Code in C++/CLI nutzen.
    Allerdings müssen da die Kompiler Setting stimmen (/clr).
    Warum nimmst Du nicht eine managed Komprimierungs Library?
    Simon



  • Also ich kenne mich mit p/Invoke nicht so aus. Willst Du nicht lieber mal nach DotNet-Versionen der zlib-Library googlen? SharpZipLib?

    Wenn mit C++/CLI codiert wird, ist eben genau P/Invoke nicht nötig und bringt nur unnötigen overhead.



  • witte schrieb:

    Also ich kenne mich mit p/Invoke nicht so aus. Willst Du nicht lieber mal nach DotNet-Versionen der zlib-Library googlen? SharpZipLib?

    http://www.icsharpcode.net/OpenSource/SharpZipLib/

    Also wenns eine .Net Lib gibt, dann klar.:) Hab auch in der MSDN gesucht und was dort stand hat mir nicht weitergeholfen.

    Aber auf dieser Seite war ich schonmal. (Wusste nicht dass es eine .NET lib ist) Nur wie nutze ich diese lib? Auf dieser Seite steht ja nicht gerade viel. Nur der Link zum Laden. Gibts keine Beispiele?

    simon.gysi schrieb:

    Woran liegt das. Kann ich überhaupt unmanaged also keine .NET Bibliotheken in .NET benutzen(wie z.B. Boost oder QT?), oder kann ich vielleicht die externen Aufrufe der C Codes nicht benutzen?

    Ja, man kann unmanaged Code in C++/CLI nutzen.
    Allerdings müssen da die Kompiler Setting stimmen (/clr).
    Warum nimmst Du nicht eine managed Komprimierungs Library?
    Simon

    Aha, also wäre ja eigentlich auch blöd, wenn man keine anderen Libs nutzen könnte.^^

    Habe die Compilereinstellung mal von (/clr:pure) auf (/clr) geändert und es geht. Keine Fehlermeldung mehr. Das Problem ist jetzt aber, dass mein Beispielcode, der noch mit Dev Cpp funktionierte, mit MS Visual C++ Express nicht mehr funktioniert. 😞

    Probiere aber nochmal den Link von Witte aus.

    Danke Euch beiden. 🙂



  • Ich hab nochmal nach der #ZipLib gegooglet. Leider finde ich keine Doku und nur sehr wenig Beispielcode, der mir aber auch nicht weitergeholfen hat.
    Kennt Ihr vielleicht tuts, howtos oder ähnliches? Brauche eigentlich nur die Funktionalität um .zip Dateien in den Speicher zu entpacken. Also nicht als Datei entpacken.

    Gibts vllt doch irgendwo auch eine kleine Doku?

    Noch ein Problem. Wie muss ich die #Ziplib in mein Projekt einbinden? Includeverzeichnisse brauche ich hier doch nicht mehr, oder? Und soweit ich es gelesen habe, muss ich nur den namespace der dll bekanntgeben und diese dll irgendwo referenzieren. Aber wo?

    Wie soll man den eine lib nutzen (wenn sie doch offensichtlich auch für andere zur Verfügung gestellt werden soll), wenn einfach nie gründlich dokumentiert wird? Das ist ziemlich nervenraubend.



  • Wie soll man den eine lib nutzen (wenn sie doch offensichtlich auch für andere zur Verfügung gestellt werden soll), wenn einfach nie gründlich dokumentiert wird? Das ist ziemlich nervenraubend.

    Das wird nicht dokumentiert, weil es Basiswissen ist.



  • simon.gysi schrieb:

    Wie soll man den eine lib nutzen (wenn sie doch offensichtlich auch für andere zur Verfügung gestellt werden soll), wenn einfach nie gründlich dokumentiert wird? Das ist ziemlich nervenraubend.

    Das wird nicht dokumentiert, weil es Basiswissen ist.

    Und woher krieg ich dieses Basiswissen?



  • Nachlesen und ausprobieren.
    Auch ist es (für mich) irgendwie klar, dass wenn Du etwas verwenden willst, was nicht schon integriert ist, Du es bekannt geben musst (z.B. dem Linker).



  • Ich glaube da haben wir uns falsch verstanden. Ich meinte damit, wie man denn die Funktionen der lib nutzen soll, wenn dies nicht dokumentiert wird. Nicht wie man die Lib einbindet. 😉

    Habe aber mittlerweile eine Hilfedatei, die ähnlich wie die MSDN aufgebaut ist, gefunden. Dort sind auch alle Funktionen und Eigenschaften aufgelistet. Aber leider nur die Deklarationen und ohne Beispiele. Leider hilft mir das so nicht weiter. Wisst Ihr vielleicht wo ich beispielcode herbekomme? Weiß nicht mehr was ich noch in Google eingeben soll.

    Habe auch noch Probleme beim einbinden der lib. Habe dem Linker die lib bekanntgegeben. Bekomme aber beim kompilieren folgende Fehlermeldungen:

    d:\...\...\Form1.h(22) : error C2143: Syntaxfehler: Es fehlt ';' vor '.'

    d:\...\...\Form1.h(22) : error C2873: 'ICSharpCode': Das Symbol kann nicht in einer using-Deklaration verwendet werden

    d:\...\...\Form1.h(22) : error C2059: Syntaxfehler: '.'

    Was mache ich falsch?



  • Hier ist die Dokumentation:
    http://zlibnetwrapper.sourceforge.net/

    Es steht nicht mehr, weil es nicht nötig ist.
    Simon

    Edit: Jetzt habe die Doku für den .NET Zlib Wrapper angegeben. Kannst Du natürlich auch nehmen, hat aber (wie ich jetzt bemerke) nichts mit deinem aktuellen Problem zu tun. Ist aber eine gute Alternative.



  • d:\...\...\Form1.h(22) : error C2143: Syntaxfehler: Es fehlt ';' vor '.'

    d:\...\...\Form1.h(22) : error C2873: 'ICSharpCode': Das Symbol kann nicht in einer using-Deklaration verwendet werden

    d:\...\...\Form1.h(22) : error C2059: Syntaxfehler: '.'

    Ich würde als erstes versuchen entweder voll- qualifizierte Namen zu nehmen.
    Ich nehme an, Du benutzt jetzt eine "using" Direktive; benutze "using namespace".
    Simon



  • Mit using namespace funktioniert es leider auch nicht. Es gibt die gleichen Fehlermeldungen.

    simon.gysi schrieb:

    Hier ist die Dokumentation:
    http://zlibnetwrapper.sourceforge.net/

    Es steht nicht mehr, weil es nicht nötig ist.
    Simon

    Edit: Jetzt habe die Doku für den .NET Zlib Wrapper angegeben. Kannst Du natürlich auch nehmen, hat aber (wie ich jetzt bemerke) nichts mit deinem aktuellen Problem zu tun. Ist aber eine gute Alternative.

    Um die zlib mit .Net zu nutzen, braucht man da immer den wrapper, oder kann ich die auch so nutzen? Nur mal aus reiner interesse. Versuche es auf jeden fall nochmal mit der zlib, wenns mit der #ziplib nicht klappt. Hat mit der zlib ja schonmal geklappt.



  • Um die zlib mit .Net zu nutzen, braucht man da immer den wrapper, oder kann ich die auch so nutzen?

    den wrapper brauchst Du nicht, jedoch brauchst Du einen Wrapper... und dann würde ich halt schon den nehmen, dens schon gibt.
    Simon



  • simon.gysi schrieb:

    Um die zlib mit .Net zu nutzen, braucht man da immer den wrapper, oder kann ich die auch so nutzen?

    den wrapper brauchst Du nicht, jedoch brauchst Du einen Wrapper... und dann würde ich halt schon den nehmen, dens schon gibt.
    Simon

    Aha okay danke. 🙂

    Noch mal zu den Fehlermeldungen. Kann es sein, dass ich anstatt

    using namespace ICSharpCode.SharpZipLib.Zip;
    

    eher

    using namespace ICSharpCode::SharpZipLib::Zip;
    

    schreiben muss? Ich glaube zwar nicht, bekomme aber diese Fehlermeldungen:

    d:\...\...\Form1.h(22) : error C2653: 'ICSharpCode': Keine Klasse oder Namespace

    d:\...\...\Form1.h(22) : error C2871: 'Zip': Es ist kein Namespace mit diesem Namen vorhanden

    Man kann ja schon alleine anhand der Fehler davon ausgehen, dass das Problem nicht an dem einfachen "." liegt.



  • Bei C++/CLI:

    using namespace ICSharpCode::SharpZipLib::Zip;
    

    Bei C#:

    using namespace ICSharpCode.SharpZipLib.Zip;
    

    Das wirds wohl gewesen sein.



  • Das funktioniert so leider auch nicht. Siehe Fehlermeldungen oben.


Anmelden zum Antworten