etc.c.zlib help

Matthew Gamble via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Thu Jul 2 16:44:31 PDT 2015


On Thursday, 2 July 2015 at 20:19:49 UTC, Laeeth Isharc wrote:
> On Thursday, 2 July 2015 at 03:07:43 UTC, Matthew Gamble wrote:
>> I am trying to make the transition from C++ to D. I've hit a 
>> snag with the etc.c.zlib module where any attempt to use this 
>> module to open a file yields an error:
>> Error 42: Symbol Undefined __lseeki64.
>>
>> Here is a simple example of code that gives the error upon 
>> compilation.
>>
>> import std.stdio;
>> import etc.c.zlib;
>>
>> void main(string[] args)
>> {
>> 	char[] fName = "C:\\Users\\Matthew 
>> Gamble\\Documents\\sample.bam\0".dup;
>> 	char[] mode ="r\0".dup;
>> 	gzFile bamFile; //no error here
>> 	bamFile = gzopen(&fName[0],&mode[0]); //this is where the 
>> error hits
>> }
>>
>> I'm using DMD32 D Compiler v2.067.1 on a windows 8 64 bit 
>> machine. Working from either Visual D in Visual Studio 2013 
>> Community and Coedit as IDEs gives the error. I'm probably 
>> doing something obviously wrong, so have mercy. If etc.c.zlib 
>> is not the preferred way to read from a binary gzipped file 
>> any advice would be appreciated. Thanks.
>
> Hi.
>
> The etc.c.zlib headers are, I think, just translations of the C 
> headers and allow you to link with an external library.  If the 
> library is not installed, or the compiler/linker cannot find 
> them then you may have a link error.  Are you sure that Visual 
> Studio knows where to find the zlib library binary ?  Can you 
> try compiling your project with DMD from the command line 
> appending -L-lz (that might work on linux, but I don't know on 
> windows)?  There is a program called everything from void tools 
> that may be helpful in finding the library file if its location 
> is not obvious.
>
> Laeeth

Thanks to Nicholas and Laeeth for all the suggestions. In the 
process of trying to explicitly link to zlib.dll like a do for 
C++, I came across a strange development. I changed the platform 
to x64 (Visual D) and now the program compiles and runs fine 
without errors. This is without pointing the linker to zlib.dll. 
While this allows me to continue developing my program, I'm a bit 
concerned about why this would fix the error and why etc.c.zlib 
cannot be compiled for 32bit on a 64bit machine(Windows). Does 
this give anyone any insights into this problem?

Best,
Matt


More information about the Digitalmars-d-learn mailing list