[Mono-dev] Invoking .net interface method from c api

Robert Jordan robertj at gmx.net
Fri Aug 21 10:42:57 UTC 2015


On 21.08.2015 11:43, zebrajap wrote:
> Oh. I got your point.
>
> The build output have System.dll in multiple places.
>
> ./lib/mono/2.0/System.dll
> ./lib/mono/4.5/System.dll
> *./lib/mono/gac/System/4.0.0.0__b77a5c561934e089/System.dll*
> ./lib/mono/4.0/System.dll
>
> I was loading it from ./lib/mono/4.0/System.dll. I am loading it as follows.
>
> 	mono_set_dirs("<Build Path>/lib", "<Build Path>/etc");
> 	pDomain = mono_jit_init_version("BuildDomain", "v4.0.30319" ); // Init the
> JIT Engine
> 	mono_config_parse(NULL);
> 	
> 	MonoAssembly* pSystemAssembly = mono_domain_assembly_open (pDomain, "<Build
> Path>/lib/mono/4.0/System.dll");
> 	pSystemImage = mono_assembly_get_image (pSystemAssembly);
>
> The file in gac seems to have the implementation.
> How to make it load from gac without providing absolute path? Please note
> that I cannot install it here.


Use one of the mono_assembly_load_*() functions because they
are obeying the usual CLR assembly binding rules (those rules C#
programmers are used to).


A good start is mono_assembly_load_with_partial_name () which
can be as simple as:

MonoImageOpenStatus status;
asm = mono_assembly_load_with_partial_name("System", &status);

Robert




More information about the Mono-devel-list mailing list