Stefano Pettini wrote:
2) What I think is a bug in the Win32 makefile. I had to compile Axis since I needed HTTPS support. Official binaries worked well, but mine not. I compiled with DEBUG=1 and I noticed the makefile didn't specify which C Runtime to use. This caused the single-threading C runtime to be implicitly linked, generating random crashes during calls of C runtime functions from more than one thread. I solved the problem replacing part of the code of the makefile with the following:

This is probably because you are using Visual Studio 6 as you have mentioned elsewhere.

"/MLd" option, which instructs the compiler to use single threaded debug c runtime, libcd.lib, is the default for VS6. "/ML" and "/MLd" options are no longer available in VS2005 [1]. C runtimes shipped with VS2005 are all multi threaded. That should be the reason why dist binaries worked fine. (Our dist is compiled using VS2005)



#################### debug symbols
!if "$(DEBUG)" == "1"
CFLAGS = $(CFLAGS) /D "_DEBUG" /Od /Z7 /MDd
LDFLAGS = $(LDFLAGS) /DEBUG
!else
CFLAGS = $(CFLAGS) /D "NDEBUG" /O2 /MD
LDFLAGS = $(LDFLAGS)
!endif

The DEBUG=1 case must specify the /MDd parameter, to link to MSVCRTD.dll in multithreading mode. The ignore library parameter of the linker is removed too. I modified also the DEBUG=0 case, replacing /MT with /MD to link to MSVCRT.dll.

/MTd and /MT could be used instead of /MDd and /MD to link the runtime library statically, but I suggest dynamic linking, since it's used as default by VS6 and by libxml2, zlib, iconv and openssl.

May you include these modifications in 1.1? Pathed makefile is attached.

I think we should add this. It is good to have our build working properly with older versions of VS compilers too.

-Dumindu.

[1] http://msdn2.microsoft.com/en-us/library/ms235505(VS.80).aspx

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to