Error 42: Symbol Undefined __lseeki64

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


On Wednesday, 16 December 2015 at 18:14:35 UTC, Byron Heads wrote:
> 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() {
>
> }


Commenting out

gzclose(fpGZip);

allows it to compile..



More information about the Digitalmars-d-learn mailing list