I am playing with nim FFI (newbie speaking). I am trying to wrap 
[minizip](https://github.com/madler/zlib/tree/master/contrib/minizip) for the 
sake of learning a bit. I have minizip installed under ArchLinux.

What I have so far is:
    
    
    #proc fmi_zip_unzip*(zip_file_path: cstring; output_folder: cstring;
    #                   callbacks: ptr jm_callbacks): jm_status_enu_t
    #int unzip(const char *zipfilename, const char *dirname);
    {.deadCodeElim: on.}
    const libname = "/usr/lib/libminizip.so"
    
    #type
    #  unzFile* = pointer
    
    {.passl: gorge("pkg-config --cflags minizip") .}
    {.passc: gorge("pkg-config --cflags minizip") .}
    #{.push importc.}
    #{.push header:"unzip.h"}
    
    {.push dynlib:libname.}
    #unzFile ZEXPORT unzOpen64 OF((const void *path));
    #proc unzOpen64*(zipfilename: cstring): pointer 
#{.header:"<minizip-master/include/miniunz.h>".}
    proc unzOpen64*(zipfilename: cstring): pointer {.header:"unzip.h" 
importc:"unzOpen64"}
    {.pop.} # dynlib
    #{.pop.}
    #{.pop.} # importc
    
    #var error:cint
    #var uf:unzFile
    var uf = unzOpen64("./test.zip")
    
    Run

And what I get is:
    
    
    $ nim c -r minizip2.nim
    ....
    minizip2.nim.c:(.text+0x20e): referencia a `unzOpen64' sin definir
    collect2: error: ld devolvió el estado de salida 1
    ....

Which means something like **unzOpen64** is a reference without a definition.

Any clue about what am I doing wrong?

Kind regards, José M.

Reply via email to