teste.c 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #include <mono/jit/jit.h>
  2. /*
  3. * Very simple mono embedding example.
  4. * Compile with:
  5. * gcc -o teste teste.c `pkg-config --cflags --libs mono`
  6. * mcs test.cs
  7. * Run with:
  8. * ./teste test.exe
  9. */
  10. static MonoString*
  11. gimme () {
  12. return mono_string_new (mono_domain_get (), "All your monos are belong to us!");
  13. }
  14. int
  15. main(int argc, char* argv[]) {
  16. MonoDomain *domain;
  17. MonoAssembly *assembly;
  18. const char *file;
  19. int retval;
  20. if (argc < 2)
  21. return 1;
  22. file = argv [1];
  23. /*
  24. * mono_jit_init() creates a domain: each assembly is
  25. * loaded and run in a MonoDomain.
  26. */
  27. domain = mono_jit_init (file);
  28. /*
  29. * We add our special internal call, so that C# code
  30. * can call us back.
  31. */
  32. mono_add_internal_call ("Mono::gimme", gimme);
  33. assembly = mono_domain_assembly_open (domain, file);
  34. if (!assembly)
  35. return 2;
  36. /*
  37. * mono_jit_exec() will run the Main() method in the assembly
  38. * and return the value.
  39. */
  40. retval = mono_jit_exec (domain, assembly, argc - 1, argv + 1);
  41. mono_jit_cleanup (domain);
  42. return retval;
  43. }