Sorry to raise this as a new question. I'm genuinely confused about the usage of CallFunction & Prototype when compiling for the unicode exe case.
Recently I was checking out a DLL from netmaestro (vistaclock, posted >here<). Seemingly it would work on everyone's machine except mine.. until I realised the failure was due to compiling with 'create unicode executable' option. Ironically, since then I've come across 2 other DLLs that also exhibit failure (when calling the DLL function) if the program was compiled as a unicode EXE. The program runs fine when the 'create unicode executable' option is unchecked.. So I revisited the vistaclock, and noticed when rewriting the example code to use prototype instead of callfunction (when calling the DLL function) the program would work properly when compiled as a unicode exe. If you want to try it, check out the code at first & last page of the post referenced above (first page has the callfunction version, last page has the prototype version).
The question is.. is this callfunction/unicode exe behaviour a bug, or basically should we migrate over to using prototype when wanting to write a unicode exe that calls a DLL?