On Wed, Feb 03, 2016 at 01:56:29AM -0500, Shao Miller wrote: > Hello, libevent mailing-list. > > Here[1] are some steps which helped me to build libevent with Microsoft > Windows XP. > > The only quirk I've discovered so far is that when I want to use the Windows > DDK's "BUILD" program to build a libevent-consuming project, I run into > calling convention mismatching... By default, BUILD seems to want to give > /Gz to the compiler, which specifies __stdcall as the default calling > convention for functions. Unfortunately, the steps[1] that I used resulted > in a libevent DLL using the __cdecl calling convention. The compiler would > want /Gd, for that. > > So what happens is that only one of these will be linked: > - libevent (via __cdecl) > - Winsock2 (ws2_32, via __stdcall) > > In a BUILD "sources" file, one can use the following line to request /Gd: > > 386_STDCALL=0 > > But that doesn't help with Winsock2. > > Fortunately, Winsock2's header uses WSAAPI to mark the calling convention > for its functions. That preprocesses as "FAR PASCAL", so the following ugly > hack gets libevent and Winsock2 to play nicely with BUILD: > > #ifndef WIN32 > /* ... */ > #else > #include <windows.h> > #define PASCAL __stdcall > #include <winsock2.h> > #endif > > The build-log will warn about a redefinition of PASCAL, but oh well.
#undef PASCAL #define PASCAL __stdcall > Does anyone think it might be worth-while to introduce an > EVENT2_MS_CALLING_CONVENTION macro between the return-type and identifier > for each libevent function? (That's where Microsoft wants it, if I recall > correctly.) Or, if all other implementations use the same convention for > the location of such a calling-convention extension, perhaps > EVENT2_CALLING_CONVENTION. Hooray for clutter? I'm not sure that we should change defaults (since this can break some other builds), but can you send a patch (email/github pull-request) with that define under #ifdef that generated by cmake/autoconf options for this? In the mean time I will try to test it under DDK's BUILD. > (Another way to ask is, "Would anyone object to...") > > [1] https://www.synthetel.com/libevent-xp *********************************************************************** To unsubscribe, send an e-mail to [email protected] with unsubscribe libevent-users in the body.
