On both Linux and Windows `nimble list -i`'s output includes: `zip [0.2.1]`.

On Linux the program listed below compiles & runs & lists a zip file.

On Windows I just get error messages (shown after the program).

nzip.nim 
    
    
    {.experimental: "codeReordering".}
    
    import os
    import strformat
    import strutils
    import unicode
    import zip/zipfiles
    
    type Action = enum actCreate, actExtract, actList
    
    main()
    
    proc main() =
      let (action, infilename, files) = readCommandLine() # May not return
      case action
      of actCreate: echo("TODO create")
      of actExtract: echo("TODO extract")
      of actList: listFiles(infilename)
    
    proc readCommandLine(): (Action, string, seq[string]) =
      var action = actList
      var infilename = ""
      var files = newSeq[string]()
      let args = commandLineParams()
      if len(args) == 0 or args[0] == "-h" or args[0] == "--help":
          echo(&"usage: {lastPathPart(getAppFilename())} " &
               "[-c|--create] " &
               "[-e|-x|--extract] " &
               "[-l|-t|--list] file.zip <file(s)>\n" &
               "(Hyphen prefixes are not required.)")
          quit()
      for arg in args:
        case arg
        of "c", "-c", "--create", "create": action = actCreate
        of "l", "t", "-l", "-t", "--list", "list": action = actList
        of "e", "x", "-e", "-x", "--extract", "extract": action = actExtract
        else:
          if infilename == "" and arg.toLower().endsWith(".zip"):
            infilename = arg
          else:
            files.add(arg)
      (action, infilename, files)
    
    proc listFiles(infilename: string) =
      var archive: ZipArchive
      if open(archive, infilename):
        defer: archive.close()
        for name in archive.walkFiles():
          echo(name)
      else:
        echo(&"failed to open \"{infilename}\"")
    
    
    Run

Errors on Windows: 
    
    
    Hint: used config file 'C:\bin\nim\config\nim.cfg' [Conf]
    R:\nim\nzip\nzip.nim(18, 28) Hint: 'files' is declared but not used 
[XDeclaredButNotUsed]
    Hint:  [Link]
    C:\Users\mark\nimcache\nzip_r\libzip_all.c.o:libzip_all.c:(.text+0x2c3): 
undefined reference to `crc32'
    C:\Users\mark\nimcache\nzip_r\libzip_all.c.o:libzip_all.c:(.text+0x33e): 
undefined reference to `deflateInit2_'
    C:\Users\mark\nimcache\nzip_r\libzip_all.c.o:libzip_all.c:(.text+0x366): 
undefined reference to `deflate'
    C:\Users\mark\nimcache\nzip_r\libzip_all.c.o:libzip_all.c:(.text+0x416): 
undefined reference to `crc32'
    C:\Users\mark\nimcache\nzip_r\libzip_all.c.o:libzip_all.c:(.text+0x426): 
undefined reference to `deflateEnd'
    C:\Users\mark\nimcache\nzip_r\libzip_all.c.o:libzip_all.c:(.text+0x4c1): 
undefined reference to `deflateEnd'
    C:\Users\mark\nimcache\nzip_r\libzip_all.c.o:libzip_all.c:(.text+0x16f4): 
undefined reference to `zError'
    C:\Users\mark\nimcache\nzip_r\libzip_all.c.o:libzip_all.c:(.text+0x371f): 
undefined reference to `zError'
    C:\Users\mark\nimcache\nzip_r\libzip_all.c.o:libzip_all.c:(.text+0x37c3): 
undefined reference to `inflateEnd'
    C:\Users\mark\nimcache\nzip_r\libzip_all.c.o:libzip_all.c:(.text+0x38a4): 
undefined reference to `crc32'
    C:\Users\mark\nimcache\nzip_r\libzip_all.c.o:libzip_all.c:(.text+0x38de): 
undefined reference to `crc32'
    C:\Users\mark\nimcache\nzip_r\libzip_all.c.o:libzip_all.c:(.text+0x39c5): 
undefined reference to `zError'
    C:\Users\mark\nimcache\nzip_r\libzip_all.c.o:libzip_all.c:(.text+0x3fc3): 
undefined reference to `crc32'
    C:\Users\mark\nimcache\nzip_r\libzip_all.c.o:libzip_all.c:(.text+0x406e): 
undefined reference to `inflateEnd'
    C:\Users\mark\nimcache\nzip_r\libzip_all.c.o:libzip_all.c:(.text+0x4250): 
undefined reference to `inflateInit2_'
    C:\Users\mark\nimcache\nzip_r\libzip_all.c.o:libzip_all.c:(.text+0x4270): 
undefined reference to `inflateEnd'
    C:\Users\mark\nimcache\nzip_r\libzip_all.c.o:libzip_all.c:(.text+0x431a): 
undefined reference to `inflateEnd'
    C:\Users\mark\nimcache\nzip_r\libzip_all.c.o:libzip_all.c:(.text+0x63c6): 
undefined reference to `inflate'
    C:\Users\mark\nimcache\nzip_r\libzip_all.c.o:libzip_all.c:(.text+0x6426): 
undefined reference to `crc32'
    C:\Users\mark\nimcache\nzip_r\libzip_all.c.o:libzip_all.c:(.text+0x6606): 
undefined reference to `crc32'
    C:\Users\mark\nimcache\nzip_r\libzip_all.c.o:libzip_all.c:(.text+0x670d): 
undefined reference to `inflateEnd'
    C:\Users\mark\nimcache\nzip_r\libzip_all.c.o:libzip_all.c:(.text+0x680f): 
undefined reference to `inflateEnd'
    C:\Users\mark\nimcache\nzip_r\libzip_all.c.o:libzip_all.c:(.text+0x6956): 
undefined reference to `inflate'
    C:\Users\mark\nimcache\nzip_r\libzip_all.c.o:libzip_all.c:(.text+0x69ad): 
undefined reference to `crc32'
    C:\Users\mark\nimcache\nzip_r\libzip_all.c.o:libzip_all.c:(.text+0x6b35): 
undefined reference to `crc32'
    C:\Users\mark\nimcache\nzip_r\libzip_all.c.o:libzip_all.c:(.text+0x6bd5): 
undefined reference to `zError'
    C:\Users\mark\nimcache\nzip_r\libzip_all.c.o:libzip_all.c:(.text+0x7199): 
undefined reference to `crc32'
    C:\Users\mark\nimcache\nzip_r\libzip_all.c.o:libzip_all.c:(.text+0x754c): 
undefined reference to `inflateInit2_'
    C:\Users\mark\nimcache\nzip_r\libzip_all.c.o:libzip_all.c:(.text+0x8de0): 
undefined reference to `crc32'
    C:\Users\mark\nimcache\nzip_r\libzip_all.c.o:libzip_all.c:(.text+0x8e90): 
undefined reference to `inflateEnd'
    C:\Users\mark\nimcache\nzip_r\libzip_all.c.o:libzip_all.c:(.text+0x9060): 
undefined reference to `inflateInit2_'
    C:\Users\mark\nimcache\nzip_r\libzip_all.c.o:libzip_all.c:(.text+0x9085): 
undefined reference to `inflateEnd'
    C:\Users\mark\nimcache\nzip_r\libzip_all.c.o:libzip_all.c:(.text+0x9144): 
undefined reference to `inflateEnd'
    collect2.exe: error: ld returned 1 exit status
    Error: execution of an external program failed: 
'C:\bin\nim\dist\mingw64\bin\gcc.exe   -o R:\nim\nzip\nzip.exe  
C:\Users\mark\nimcache\nzip_r\libzip_all.c.o 
C:\Users\mark\nimcache\nzip_r\stdlib_assertions.nim.c.o 
C:\Users\mark\nimcache\nzip_r\stdlib_widestrs.nim.c.o 
C:\Users\mark\nimcache\nzip_r\stdlib_io.nim.c.o 
C:\Users\mark\nimcache\nzip_r\stdlib_system.nim.c.o 
C:\Users\mark\nimcache\nzip_r\stdlib_parseutils.nim.c.o 
C:\Users\mark\nimcache\nzip_r\stdlib_unicode.nim.c.o 
C:\Users\mark\nimcache\nzip_r\stdlib_strutils.nim.c.o 
C:\Users\mark\nimcache\nzip_r\stdlib_dynlib.nim.c.o 
C:\Users\mark\nimcache\nzip_r\stdlib_winlean.nim.c.o 
C:\Users\mark\nimcache\nzip_r\stdlib_times.nim.c.o 
C:\Users\mark\nimcache\nzip_r\stdlib_os.nim.c.o 
C:\Users\mark\nimcache\nzip_r\stdlib_strformat.nim.c.o 
C:\Users\mark\nimcache\nzip_r\@m..@s..@s..@sC@c@sUsers@[email protected]@[email protected]@[email protected]
 
C:\Users\mark\nimcache\nzip_r\@m..@s..@s..@sC@c@sUsers@[email protected]@[email protected]@[email protected]
 C:\Users\mark\nimcache\nzip_r\@mnzip.nim.c.o    '
    
    
    Run

Can anyone advise how I can get this to work on Windows as well as Linux?

Reply via email to