Error 42: Symbol Undefined __lseeki64

Byron Heads via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Wed Dec 16 10:14:35 PST 2015


On Wednesday, 16 December 2015 at 17:23:15 UTC, Byron Heads wrote:
> Seeing this issue on 2.069.2 using etc.c.zlib.
>
> C:\d\dmd2\windows\bin\..\lib\phobos.lib(gzlib)
>  Error 42: Symbol Undefined __lseeki64
>
> The code was compiling in 2.067.  Not clear on where to look to 
> fix this issue.

I can reproduce with this code...
Windows dmd 2.069.2 32bit


import std.stream;
import std.exception;

// todo: add bzip support..
class GZipBufferedFile : BufferedFile {

private:
     GZipFile gZipFile;
     /**
      * GZipFile stream, safly opens and closes a gzip file, also 
will correctly read from the zip file
      */
     class GZipFile : File {
       import std.c.stdio;
       import etc.c.zlib;

       FILE* fp;
       gzFile fpGZip;

       /**
        * Use gzopen to open the zip file
        */
       this(string filename) {
         fp = fopen(filename.toStringz, "rb");
         enforce(fp !is null, "Failed to open file 
'%s'".format(filename));

         version(Windows) {
           fpGZip = gzdopen(fp._file, "rb");
           super(fpGZip, FileMode.In);
         } else {
           fpGZip = gzdopen(fileno(fp), "rb");
           super(cast(int)fpGZip, FileMode.In);
         }
         seekable = true;

         // Still not supported... sigh
         //gzbuffer(fpGZip, 1024 * 1024);
       }


       ulong tell() {
         fflush(fp);
         return ftell(fp);
       }

       /**
        * read data block with gzread
        */
       override size_t readBlock(void* buffer, size_t size) {
           assertReadable();

           size = gzread(fpGZip, buffer, cast(uint)size);
           if (size == -1) {
               size = 0;
           }

           // use gzeof to test for end of file
           readEOF = fpGZip.gzeof != 0;
           return size;
       }

       /**
        * make sure we close with gzclose
        */
       override void close() {
         gzclose(fpGZip);
         fpGZip = null;
         fp = null;
       }
   }

public:
   this(string filename) {
     gZipFile = new GZipFile(filename);
     super(gZipFile);
   }

   ulong tell() {
     return gZipFile.tell;
   }
}


void main() {

}





More information about the Digitalmars-d-learn mailing list