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