I am currently building an application that targets Mac OS, Linux and Windows, both on 32-bit and 64-bit versions.
This application relies on pthread-win32 (needed by gsoap and sofia-sip).
The problem is that the latest released version of pthread-w32 date of December 2006 and doesn't work well with Windows 64-bit.
After some search, I discovered that the project was still active on their CVS and that it works quite well with Windows 64-bit :)
# How-to build pthread-w32 on Windows 64-bit
Checkout the latest CVS version (warning: I only tested the revision 1.90 on date of 2011/05/06 02:11:50).
$> cvs -d :pserver:anoncvs@sourceware.org:/cvs/pthreads-win32 login
{enter "anoncvs" for the password}
$> cvs -d :pserver:anoncvs@sourceware.org:/cvs/pthreads-win32 checkout pthreads
Apply this patch to use correct libraries on debug compilation:
--- .\old\pthreads\Makefile 2011-09-06 15:40:29 +0000
+++ .\new\pthreads\Makefile 2011-09-06 13:55:09 +0000
@@ -26,9 +26,9 @@
CC = cl
CPPFLAGS = /I. /DHAVE_PTW32_CONFIG_H
-XCFLAGS = /W3 /MD /nologo
-CFLAGS = /O2 /Ob2 $(XCFLAGS)
-CFLAGSD = /Z7 $(XCFLAGS)
+XCFLAGS = /W3 /nologo
+CFLAGS = /O2 /MD /Ob2 $(XCFLAGS)
+CFLAGSD = /Z7 /MDd $(XCFLAGS)
# Uncomment this if config.h defines RETAIN_WSALASTERROR
#XLIBS = wsock32.lib
Open a command prompt (cmd.exe), go to the folder that contains the pthread-w32 source.
Type the following (replace the Visual Studio path by yours!):
$> "C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\vcvarsall.bat" amd64
$> nmake clean VC
$> nmake clean VC-debug
Now you can use pthreadVC2.dll, pthreadVC2.lib, pthreadVC2d.dll and pthreadVC2d.lib with your project!
Optional: you can test it but going on the "tests" subdirectory and type nmake VC
.
This version seems to work very well with my project. But keep in mind that this version was not released by its authors, so it's still a testing and possibly unstable version!