#include <mono/jit/jit.h>
#include <mono/metadata/assembly.h>
#include <mono/metadata/environment.h>
+#include <mono/metadata/mono-config.h>
#include <mono/metadata/threads.h>
#include <mono/metadata/debug-helpers.h>
#endif
SWITCH_BEGIN_EXTERN_C \r
\r
SWITCH_MODULE_LOAD_FUNCTION(mod_managed_load);\r
-SWITCH_MODULE_DEFINITION(mod_managed, mod_managed_load, NULL, NULL);\r
+SWITCH_MODULE_DEFINITION_EX(mod_managed, mod_managed_load, NULL, NULL, SMODF_GLOBAL_SYMBOLS);\r
\r
SWITCH_STANDARD_API(managedrun_api_function); /* ExecuteBackground */\r
SWITCH_STANDARD_API(managed_api_function); /* Execute */\r
return SWITCH_STATUS_FALSE;\r
}\r
\r
+#ifndef WIN32 \r
+ // So linux can find the .so\r
+ mono_config_parse_memory("<configuration><dllmap dll=\"mod_managed\" target=\"mod_managed.so\"/></configuration>");\r
+#endif\r
+\r
switch_snprintf(filename, 256, "%s%s%s", SWITCH_GLOBAL_dirs.mod_dir, SWITCH_PATH_SEPARATOR, MOD_MANAGED_DLL);\r
globals.domain = mono_jit_init(filename);\r
\r
/* Run loader */ \r
MonoObject * exception = NULL;\r
MonoObject * objResult = mono_runtime_invoke(globals.loadMethod, NULL, NULL, &exception);\r
- success = *(int *) mono_object_unbox(objResult);\r
-\r
if (exception) {\r
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Load threw an exception.\n");\r
mono_print_unhandled_exception(exception);\r
return SWITCH_STATUS_FALSE;\r
}\r
+ success = *(int *) mono_object_unbox(objResult);\r
#endif\r
if (success) {\r
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Load completed successfully.\n");\r