HOST MACHINE and OPERATING SYSTEM:
x86, Cygwin, Microsoft Windows
TARGET MACHINE and OPERATING SYSTEM, if different from HOST:
Not different.
COMPILER NAME AND VERSION (AND PATCHLEVEL):
GCC 3.4.4
THE $ACE_ROOT/ace/config.h FILE:
config-cygwin32.h
THE $ACE_ROOT/include/makeinclude/platform_macros.GNU FILE:
platform_cygwin32.GNU
CONTENTS OF $ACE_ROOT/bin/MakeProjectCreator/config/default.features:
Does not exist.
AREA/CLASS/EXAMPLE AFFECTED:
Building programs agains ACE (and TAO) is affected.
DOES THE PROBLEM AFFECT:
COMPILATION? No
LINKING? No
EXECUTION? No
OTHER (please specify)?
Linking programs against ACE (and TAO) is affected.
SYNOPSIS:
ACE stock build system doesn't take into account the "import libraries" feature of Microsoft Windows.
DESCRIPTION:
Under Windows (Cygwin included) a dynamic library consists of two files:
name.DLL - the dynamic library itself (used only on runtime)
name.A (or name.LIB outside of Cygwin) - an import library (used only during linking)
The import libraries are needed when linking, so they should be in the lib directory. The DLL files must be in a directory which is included in $PATH,
so it makes sense to put them in the bin directory.
But the stock build system puts the DLL files in the lib directory, and does nothing about the import libraries (it just leaves them scattered
throughout the build tree).
REPEAT BY:
Build ACE under Cygwin. Try to link and run a program against it non-statically.
SAMPLE FIX/WORKAROUND:
I have attached a patch. It doesn't look very nice, but works for me.
Disclaimer: I am not a Windows programmer, so if I have written some big nonsense above - please, excuse me.