Ok I found the problem.
I reproduced the errors (I have update libraries and header from MS so I could always link).
The only problem is the library iupstub.lib that would link with static variables __argc and __argv.
An executable have always to link with a static library containing the entry point (entry point can't be in a DLL which is still not loaded) and uses pocrt.lib for PellesC and libcmt.lib for MS. The two variables __argc and __argv are statically defined in both libraries, so could not be linked together.
Now happen that msvcrt.lib refers to libcmt.lib so automatically include it in the linkage, while the compiler itself includes pocrt.lib as default library. This lead to the multiply defined symbols error.
Using the switch -Zl omits all libraries so the entry point __WinMainCRTStartup is missing.
Adding libcmt.lib to the linker libraries works only using multithreaded DLL.
The best solution is to recompile in pellesC the iupstub.lib and go on.
With a native iupstub.lib you can compile with single threaded and multithreaded static and dynamic libraries with no errors, but compiling in singlethreaded is wrong anyway because the iup library and DLL are created as multithreaded.
Moreover using native iupstub.lib you don't need anymore to specify msvcrt.lib in the linker.
I have attached a workspace including the fixed alarm project and the iupstub.lib native.