Installing PennMUSH on Windows
You don't need to do this if you just want to quickly start up a PennMUSH server on a windows machine; Try the most recent binary from the PennMUSH download page
Note: These instructions are for building PennMUSH on Windows using MSVC++ / MS VS.NET. If you're using a Unix emulation environment like Cygwin or Mingw, follow the instructions for installing in Unix.
Requirements:
- ActivePerl
- CMake
- Visual Studio 2010 (the express edition works)
- Windows 2000 or newer.
Grab the sources from http://openssl.org, unpack it, and cd
into the directory. Full directions are available in INSTALL.W32
, but you'll want to do something like this:
perl Configure VC-WIN32 no-asm
ms\do_ms
nmake -f ms\ntdll.mak
Grab the sources, unpack it, and cd
into the directory.
cmake .
Open ALL_BUILD.vcproj
, and build the appropriate configuration (you probably want Release).
Open the VS2010 project in win32\vs2010
, and add the following paths to your include path:
path-to-openssl\inc32
path-to-pcre
Add the following to your library search path:
path-to-openssl\out32dll
path-to-pcre\Release
And finally add the following to additional libraries:
pcre.lib
ssleay32.lib
libeay32.lib
At some point, the compile will complain with the error that 'next_timeout' uses undefined struct 'timeval'
in dt1s1.h
. This is because OpenSSL tries to #include
the winsock.h
header, which is incompatible with winsock2.h
(which PennMUSH uses). To fix that, just change the include in OpenSSL from #include <winsock.h>
to #include <winsock2.h>
.
There are symbol conflicts between libcmtd and msvcrtd! You're probably trying to make a debug build. In Project Properties > Configuration Properties > C/C++ > Code Generation, change the value for Runtime Library to Multi-threaded Debug DLL (/MDd)
EWOULDBLOCK isn't defined! It's really hard for one person to maintain the Win32 build, much less make sure it builds under all versions of Visual Studio. The only officially supported compiler is Visual Studio 2010. So use Visual Studio 2010.
I can't connect!
This seems to occur when Penn only listens over IPv6. You can force it to use IPv4 by setting the ip_addr line in mush.cnf to ip_addr 0.0.0.0
. Unfortunately I can't reproduce this problem locally...