You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@httpd.apache.org by Steffen <in...@apachelounge.com> on 2015/05/25 14:05:17 UTC

VS2015 RC (VC14)

Testing building httpd 2.4.12 with VS2015 RC.  The PHP team is planning  to
use VC14 with PHP7, which is coming out later this year. Apachelounge want
to inline with them, a huge PHP user base.

All went "smoothly" and apachelounge is running it now.

You can download at http://www.apachelounge.com/viewtopic.php?p=30522 ,
included mod_fcgid build with VC14.  Win64 follows later.

Initially Apachemonitor did not build, but solved that (see below).
Also some very old third-party modules give syntax errors with the more
strict VS2015 and the authors are gone.  No problem for now because VC11 and
VC10 modules are running fine and is fully supported by Microsoft.

Build it with the GUI (no cmake or command line tried).  Build with
apr-1.5.1 (had to replace apr_atomic.c with the one from 1.5.2)
apr-util-1.5.4 apr-iconv-1.2.1 openssl-1.0.2a(+asm)  zlib-1.2.8(+asm)
pcre-8.37 libxml2-2.9.2 lua-5.1.5 expat-2.1.0

Steffen

Errors and warning with Apachemonitor :

Error LNK2019 unresolved external symbol __setargv referenced in function
_WinMain@16 ApacheMonitor
C:\VC14\Win32\httpd-2.4.12\support\win32\ApacheMonitor.obj 1
Error LNK1120 1 unresolved externals ApacheMonitor
C:\VC14\Win32\httpd-2.4.12\support\win32\Release\ApacheMonitor.exe 1
Warning C4996 'GetVersionExA': was declared deprecated ApacheMonitor
C:\VC14\Win32\httpd-2.4.12\support\win32\ApacheMonitor.c

setargv() is supposed to read in the console args because that’s a GUI app
and they have to use WinMain. For that to work, one should actually link
with setargv.obj
https://msdn.microsoft.com/en-us/library/8bch7bkk%28v=vs.140%29.aspx . That
is not being done, so not sure how it even works with VC9/VC11. First I
tried to declare UNICODE, but that’s a bad idea – the whole app isn’t
prepared for that. Thus, I’ve tried to remove the _setargv() call.

That worked – under VC14 argv seems to be set

The warning happens also with VS2013 and is reported here in the past.
Dev's should investigate on how to properly get OS versions, as win10 is
coming, also PHP deals with it: https://bugs.php.net/bug.php?id=69642 . The
warning, while looking harmless actually, might get annoying as GetVersionEx
might deliver improper version on win10. The only checks I saw yet are about
ensuring the OS is at least w2k. So should be fine for now as even if it
delivers say win8 on win10, it’s still more advanced then win2k.