Compilation Error Under Visual Studio 14 on Windows (fixed)

Jason Madden jason.madden at nextthought.com
Sat Oct 17 01:38:05 CEST 2015


Hi all,

I'm a maintainer of the Python library gevent which wraps libev. When compiling the latest release of libev using the relatively-recently-released Visual Studio 14 (aka 2015) for both 32- and 64-bit environments we got compilation errors like these:

C:\Program Files (x86)\Windows Kits\10\include\10.0.10240.0\ucrt\sys/timeb.h(25): error C2032: '__timezone': function cannot be member of struct '__timeb32' 
C:\Program Files (x86)\Windows Kits\10\include\10.0.10240.0\ucrt\sys/timeb.h(33): error C2032: '__timezone': function cannot be member of struct '__timeb64' 
C:\Program Files (x86)\Windows Kits\10\include\10.0.10240.0\ucrt\sys/timeb.h(42): error C2032: '__timezone': function cannot be member of struct 'timeb' 

Our solution was to remove the include of <sys/timeb.h> in ev_win32.c. (As far as I can tell, that hasn't been necessary since sometime in 2009 when the code was changed to use GetSystemTimeAsFileTime.) After that, libev compiles and runs using Visual Studio 14, Visual Studio C++ 9 For Python, Visual Studio 9, and Visual Studio 10. timeb.h is noted to contain "xsi legacy functionality", so I'm not sure if it's not being maintained properly anymore, or exactly what the issue was (I don't have access to debug on the windows virtual machine in use because it's a CI server, I just get the build logs)---all I know is that taking out the import fixed the problem.

I hope this is a helpful report.

Thanks,
Jason


More information about the libev mailing list