Error 42: Symbol Undefined __lseeki64

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


On Wednesday, 16 December 2015 at 18:21:33 UTC, Byron Heads wrote:
> 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..

Submitted reduced case as a bug:
https://issues.dlang.org/show_bug.cgi?id=15457


import etc.c.zlib;

void main() {
   gzclose(null);
}






More information about the Digitalmars-d-learn mailing list