Dear Shaun,
I have used the method, which has developed here, since nearly a year, but I have not yet encountered your problem. So I can only make guesses.
I use cygwin and have run cygcheck on one of my executables. The part of the output below shows the the relevant dlls, which are used:
C:\WINDOWS\system32\nicaiu.dll
C:\WINDOWS\system32\NIPALU.dll
C:\WINDOWS\system32\nipalut.dll
C:\WINDOWS\system32\NIPAL32.dll
C:\WINDOWS\system32\SETUPAPI.dll
C:\WINDOWS\system32\nimdbgu.dll
C:\WINDOWS\system32\niorbu.dll
C:\WINDOWS\system32\nirpc.dll
C:\WINDOWS\system32\WSOCK32.dll
C:\WINDOWS\system32\WS2_32.dll
C:\WINDOWS\system32\WS2HELP.dll
C:\WINDOWS\system32\MSVCR71.dll
C:\WINDOWS\system32\nicesru.dll
C:\WINDOWS\system32\nimstsu.dll
C:\WINDOWS\system32\nimercu.dll
C:\WINDOWS\system32\nidmxfu.dll
C:\WINDOWS\system32\nimhwcfu.dll
C:\WINDOWS\system32\nimxdfu.dll
C:\WINDOWS\system32\nidimu.dll
C:\WINDOWS\system32\nimru2u.dll
C:\WINDOWS\system32\nimxpu.dll
There is no icaiu.dll at all, but the root dll is called nicaiu.dll!
My guess is that there is some problem with backslashes. You have quoted the path of the dll as WINDOWSsystem32 icaiu.dll
And all backslashes are missing. Perhaps it actually was \nicaiu.dll, and the '\n' was interpreted special?
Are you really sure, that C:\WINDOWS\system32\ is in your PATH? In my case the (cygwin) $PATH is set to something like:
> echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/cygdrive/c/WINDOWS/system32
where /cygdrive/c/WINDOWS/system32 actually points to C:\WINDOWS\system32 under cygwin.
You could copy C:\WINDOWS\system32\nicaiu.dll into the directory of your executable just to check whether the error message changes (of course, several other dlls would still be missing).
I hope this is a starting point to figure out the problem.
Best wishes
Jens