Skip to content

Installing PennMUSH on Windows

Mike Griffiths edited this page Aug 21, 2015 · 1 revision

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.

Introduction

Requirements:

  • ActivePerl
  • CMake
  • Visual Studio 2010 (the express edition works)
  • Windows 2000 or newer.

Details

Build OpenSSL

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

Build PCRE

Grab the sources, unpack it, and cd into the directory.

cmake .

Open ALL_BUILD.vcproj, and build the appropriate configuration (you probably want Release).

Build PennMUSH

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>.

Common problems

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...