TZipMaster (porttaus Windowsista Linuxiin)

Anonyymi-ap

On olemassaoleva Delphi -ohjelma, jossa on käytetty TZipMaster -komponenttia.

https://github.com/naadsm/zipmaster

Entä, jos haluaisin muokata ohjelmaani niin, että sen saa kääntymään FreePascal + Lazarus -yhdistelmällä Linuxille.

TZipMaster -komponentti käyttää Windows -käyttöjärjestelmässä kahta DLL -tiedostoa:

ZIPDLL.DLL ja UNZDLL.DLL

Miten saisin vastaavat linux -versiot ZIPDLL.so ja UNZDLL.so ?

Koska Linuxin tapa etsiä noita .so -tiedostoja poikkeaa siitä, miten Windows etsii .DLL -tiedostoja, niin kannattanee ohjelmani Linux -versioon laittaa vaikkapa .INI -tiedosto, jossa jotain tämäntapaista:

[DLLPaths]
ZIPDLL=/home/username/lib/ZIPDLL.so
UNZDLL=/home/username/lib/UNZDLL.so

Mutta, jollen löydä tuosta paketista valmiita kirjastotiedostoja linuxia varten, miten saan käännettyä nuo C -lähdekoodista ?

Tuo olisi kaikkein näppärin ratkaisu, koska silloin ZIPatut datatiedostot olisivat sellaisenaan kelvollisia sekä Windows- että Linux -käyttöjärjestelmissä - eli olisivat käyttöjärjestelmäriippumattomia.

Noiden datatiedostojen datasisältö on jo nyt käyttöjärjestelmäriippumaton, kyse on enää ZIP -pakkauksen ja sen purkamisen toteutuksesta.

4

397

    Vastaukset 4

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • Anonyymi

      Käyttäjän .bashrc tiedostoon lisäät rivin:
      export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/$USER/lib
      Tai lisää se hakemistoon /etc/ld.so.conf.d/ Vaikka tiedostoon zip_unzip.conf, jonka luot itse. Näin linkkeri löytää sen itse kaikille käyttäjille.
      -LD-lataaja ei lataa automaattisesti uusia kirjastoja jo käynnissä olevaan prosessiin, joten jos lisäät vasta käynnistyksen jälkeen so-tiedostoja joudut lataamaan ne itse.
      Siellä lukee: "The DLL source code needs Borland C++ Builder v3 - v6."
      -kokeile kääntää dll uudestaan shared object-moodissa
      Tai pystyykö ohjelman ajamaan wine:llä sellaisenaan ilman mitään käännöksiä? Kuitenkin, jos tarkoituksena on ajaa zip/unzip-ohjelmaa helpointa lienee tehdä wrapperi, joka kutsuu em. ohjelmaa. Tai voi käyttää suoraan libzip-kirjastoa, jolle luo unitin, jolla mappaa c-funktiot pas-funktioiksi.

      • Anonyymi

        "voi käyttää suoraan libzip-kirjastoa, jolle luo unitin, jolla mappaa c-funktiot pas-funktioiksi"

        Mahdollisesti...

        Alkuperäinen TZipMaster -komponentti mahdollistaa esim. yksittäisen tiedoston purkamisen levyllä olevan ZIP -tiedoston sisältä siten, että puretun tiedoston sisältö menee suoraan RAM -muistista varattuun muistialueeseen, eikä mitään väliaikaistiedostoa tarvitse luoda.

        libzip? Löytyykö siitä vastaava toiminnallisuus, vai purkaako vain levytiedostoja kiintolevylle kuten esim tunnettu pkunzip -ohjelma tekee ?


      • Anonyymi
        Anonyymi kirjoitti:

        "voi käyttää suoraan libzip-kirjastoa, jolle luo unitin, jolla mappaa c-funktiot pas-funktioiksi"

        Mahdollisesti...

        Alkuperäinen TZipMaster -komponentti mahdollistaa esim. yksittäisen tiedoston purkamisen levyllä olevan ZIP -tiedoston sisältä siten, että puretun tiedoston sisältö menee suoraan RAM -muistista varattuun muistialueeseen, eikä mitään väliaikaistiedostoa tarvitse luoda.

        libzip? Löytyykö siitä vastaava toiminnallisuus, vai purkaako vain levytiedostoja kiintolevylle kuten esim tunnettu pkunzip -ohjelma tekee ?

        Huomaan libzip:n ongelman. zlib voisi olla toimivampi ratkaisu:
        fpc/units/i386-win32/zlib/
        \fpc\sources\packages\zlib\
        -ilmeisesti tuosta on olemassa paszlib-käännösversio pascalille.


    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Naiset ymmärtävät ettei talous lähde nousuun

      Miten paljon järjellisempi olento nainen onkaan kuin tilastollisestikin paremmin tienaava mies. Kun kaikkialla puskuroid
      Maailman menoa
      153
      1018
    2. En jaksa

      Enää pelleillä ja paljastan J naisen nimen. Se on Jonna ja hän ei koskaan, edes luultavasti ollut täällä. Silti piene
      Ikävä
      44
      707
    3. Kissa eli kivuissa useita viikkoja

      Ei vienyt lääkäriin vaikka kissa parka maukui ja moni seuraajakin (minäkin) näin että kissa on sairas.
      Tuusniemi
      126
      647
    4. Minkälainen nainen

      Minkälainen kaipaamasi nainen on luonteeltaan? Kaikki hassun hauskat antava ja helppo on sallittuja, jos poikien on kovi
      Ikävä
      23
      638
    5. Okei, eli olet rakastunut

      Hyvä sinä, niin minäkin.
      Ikävä
      67
      605
    6. Yksi asia sen esti

      Etten antanut meille mahdollisuutta
      Ikävä
      42
      603
    7. Martinan mauton tyyli

      Voi hyvää päivää 🤣 nyt ollaan oltu Muhiksen kanssa Kultareservin avajaisissa suorat housut jalassa ja 500€ korsetti pää
      Kotimaiset julkkisjuorut
      159
      556
    8. Jos meillä olisi yhteinen koti

      Niin haittaisiko sinua pitää se vähä tavaraisena? Ajattelin tänään että jos joskus asuttaisiin yhdessä ja haluaisit pal
      Ikävä
      50
      545
    9. Arvaako kukaan?

      "Humalojalla metalliromun keräyspaikalla on kulkenut pitkin kevättä ja kesää joku henkilö, joka on vienyt sieltä kymmeni
      Haapavesi
      34
      544
    10. Tuntuu pahalta meidän molempien puolesta

      Anteeksi, että olen tällainen pelkuri. En vaan usko rakkauteen enää miehen ja naisen välillä omalla kohdalla. Tiedän, et
      Ikävä
      34
      518
    Aihe