diff --git a/src/mod/languages/mod_managed/freeswitch_managed.h b/src/mod/languages/mod_managed/freeswitch_managed.h index 477ca82b0b..31d36ef721 100644 --- a/src/mod/languages/mod_managed/freeswitch_managed.h +++ b/src/mod/languages/mod_managed/freeswitch_managed.h @@ -38,8 +38,17 @@ SWITCH_BEGIN_EXTERN_C #include #include -typedef void (*hangupFunction)(void); -typedef char* (*inputFunction)(void*, switch_input_type_t); +/* calling conventions for Windows */ +#ifndef MANAGED_STDCALL +#ifdef WIN32 +# define MANAGED_STDCALL __stdcall +# else +# define MANAGED_STDCALL +# endif +#endif + +typedef void (MANAGED_STDCALL *hangupFunction)(void); +typedef char* (MANAGED_STDCALL *inputFunction)(void*, switch_input_type_t); #ifndef _MANAGED diff --git a/src/mod/languages/mod_managed/mod_managed.cpp b/src/mod/languages/mod_managed/mod_managed.cpp index b2ad33c016..7f2d366e53 100644 --- a/src/mod/languages/mod_managed/mod_managed.cpp +++ b/src/mod/languages/mod_managed/mod_managed.cpp @@ -68,10 +68,10 @@ SWITCH_STANDARD_API(managed_loadassembly); /* Load assembly */ mod_managed_globals globals = { 0 }; // Global delegates to call managed functions -typedef int (*runFunction)(const char *data, void *sessionPtr); -typedef int (*executeFunction)(const char *cmd, void *stream, void *Event); -typedef int (*executeBackgroundFunction)(const char* cmd); -typedef int (*loadAssemblyFunction)(const char* filename); +typedef int (MANAGED_STDCALL *runFunction)(const char *data, void *sessionPtr); +typedef int (MANAGED_STDCALL *executeFunction)(const char *cmd, void *stream, void *Event); +typedef int (MANAGED_STDCALL *executeBackgroundFunction)(const char* cmd); +typedef int (MANAGED_STDCALL *loadAssemblyFunction)(const char* filename); static runFunction runDelegate; static executeFunction executeDelegate; static executeBackgroundFunction executeBackgroundDelegate;