NT specific change for nicer error message (Mark H)
diff --git a/Python/importdl.c b/Python/importdl.c
index 16b50af..65f2f72 100644
--- a/Python/importdl.c
+++ b/Python/importdl.c
@@ -336,9 +336,38 @@
 		HINSTANCE hDLL;
 		hDLL = LoadLibrary(pathname);
 		if (hDLL==NULL){
-			char errBuf[64];
-			sprintf(errBuf, "DLL load failed with error code %d",
-				GetLastError());
+			char errBuf[256];
+			unsigned int errorCode;
+
+			/* Get an error string from Win32 error code */
+			char theInfo[256];           /* Pointer to error text from system */
+			int theLength;               /* Length of error text */
+
+			errorCode = GetLastError();
+
+			theLength = FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, /* flags */
+				NULL,                              /* message source */
+				errorCode,                         /* the message (error) ID */
+				0,                                 /* default language environment */
+				(LPTSTR) theInfo,                  /* the buffer */
+				sizeof(theInfo),                   /* the buffer size */
+				NULL);                             /* no additional format args. */
+
+			/* Problem: could not get the error message. This should not happen if called correctly. */
+			if (theLength == 0) {
+				sprintf(errBuf, "DLL load failed with error code %d", errorCode);
+			} else {
+				int len;
+				/* For some reason a \r\n is appended to the text */
+				if (theLength >= 2 && theInfo[theLength-2] == '\r' && theInfo[theLength-1] == '\n') {
+					theLength -= 2;
+					theInfo[theLength] = '\0';
+				}
+				strcpy(errBuf, "DLL load failed: ");
+				len = strlen(errBuf);
+				strncpy(errBuf+len, theInfo, sizeof(errBuf)-len);
+				errBuf[sizeof(errBuf)-1] = '\0';
+			}
 			err_setstr(ImportError, errBuf);
 		return NULL;
 		}