Has anyone successfully installed and ran Apache::Icon-0.02 or FileMan-0.6d
with mod_perl on any Win32 platforms?

My setup:
Win2K, Apache-1.3.20, mod_perl-1.26, ActivePerl-5.6.1 build 626

Problem:

I was trying to install Apache::Icon-0.02 (required both by FileMan and
Apache::AutoIndex) but encountered compilation errors of this sort:

  D:\MSVS\VC98\INCLUDE\winsock2.h(99) : error C2011: 'fd_set' : 'struct' type
  redefinition

  D:\MSVS\VC98\INCLUDE\winsock2.h(134) : warning C4005: 'FD_SET' : macro
  redefinition
        D:\MSVS\VC98\INCLUDE\winsock.h(83) : see previous definition of 'FD_SET'

  D:\MSVS\VC98\INCLUDE\winsock2.h(143) : error C2011: 'timeval' : 'struct'
  type redefinition

  D:\MSVS\VC98\INCLUDE\winsock2.h(199) : error C2011: 'hostent' : 'struct'
  type redefinition

  D:\MSVS\VC98\INCLUDE\winsock2.h(212) : error C2011: 'netent' : 'struct'
  type redefinition

...etc...

After some code inspection, I found out that both Apache-1.3.20 (os.h) and
mod_perl-1.26 (mod_perl.h) include <winsock2.h> BUT Perl-5.6.1
(/usr/perl/lib/CORE/sys/socket.h) includes <winsock.h>

As the result, compilation failed because of these 2 conflicting header file
inclusion.  The include hierachy looks something like this: 

Icon.h -> mod_perl.h -> winsock2.h and perl.h

perl.h -> sys/socket.h (in /perl/lib/CORE) -> winsock.h!!

In general, any mod_perl Apache modules (eg: Apache::Icon and FileMan) with C
code would fail to compile due to the exact reason.

Any suggestions on how to get around this?

Thanks!
-- 
Danny Siu

Reply via email to