mono_method_desc_search_in_image problem, and some question...
pierre <[email protected]> Mon, 12 Feb 2018 00:45:33 +0100
| Newsgroups | gmane.comp.gnome.mono.general |
|---|---|
| Message-ID | <[email protected]> |
This is a multi-part message in MIME format.
--===============7186825149016498947==
Content-Type: multipart/alternative;
boundary="------------F8FB6A229B538AD8E757E880"
Content-Language: en-US
This is a multi-part message in MIME format.
--------------F8FB6A229B538AD8E757E880
Content-Type: text/plain; charset=windows-1252; format=flowed
Content-Transfer-Encoding: 8bit
Hi,
I am trying to embed mono... and I ran into a problem:
with the code:
TypeMethodDesc = mono_method_desc_new("Script:Main", 0);
method = mono_method_desc_search_in_image(TypeMethodDesc,
monoEngine->image);
is returning a method on the cs code:
public class Script
{
static public void Main ()
{
ScriptEngine.report("--Main Called ");
}
}
but it is also returning a method on the code:
public class Script*2*
{
static public void Main ()
{
ScriptEngine.report("--Main Called ");
}
}
and a question:
is there a way to know if mono_domain_unload was successful or not?
I am creating an app domain per script so that I can recompile and
reload the script at will...
I do not detect an error, but the new script seems (not always at least)
not to replace the old one...
Basically, I am doing:
res = mono_domain_set(rootDomain, FALSE);
mono_domain_unload(monoEngine->domain);
monoEngine->domain =
mono_domain_create_appdomain("ScriptEngine-sub", NULL);
data = readFile(f, &dataLen);
fclose(f);
monoEngine->image = mono_image_open_from_data_with_name(data, dataLen,
TRUE /*
copy data */,
&status,
FALSE /* ref only */,
monoEngine->fileName);
free(data);
if (status != MONO_IMAGE_OK || monoEngine->image == NULL)
{
return FALSE;
}
// load the assembly
monoEngine->assembly =
mono_assembly_load_from_full(monoEngine->image,
monoEngine->fileName,
&status, FALSE);
if (status != MONO_IMAGE_OK || monoEngine->assembly == NULL)
{
mono_image_close(monoEngine->image);
return FALSE;
}
but it does not seem to work everytime.
Lastly, Is there a way to compile cs source without launching a
system("msc.code.cs -target:library");
thanks in advance
Pierre
--------------F8FB6A229B538AD8E757E880
Content-Type: text/html; charset=windows-1252
Content-Transfer-Encoding: 8bit
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;
charset=windows-1252">
</head>
<body text="#000000" bgcolor="#FFFFFF">
Hi,<br>
<br>
I am trying to embed mono... and I ran into a problem:<br>
with the code: <br>
TypeMethodDesc = mono_method_desc_new("Script:Main", 0);<br>
method = mono_method_desc_search_in_image(TypeMethodDesc,
monoEngine->image);<br>
<br>
is returning a method on the cs code:<br>
<blockquote><tt>public class Script</tt><tt><br>
</tt><tt>{</tt><tt><br>
</tt><tt> static public void Main ()</tt><tt><br>
</tt><tt> {</tt><tt><br>
</tt><tt> ScriptEngine.report("--Main Called ");</tt><tt><br>
</tt><tt> }</tt><tt><br>
</tt><tt>}</tt><br>
</blockquote>
<br>
but it is also returning a method on the code:<br>
<br>
<blockquote><tt>public class Script<b>2</b></tt><tt><br>
</tt><tt>
{</tt><tt><br>
</tt><tt>
static public void Main ()</tt><tt><br>
</tt><tt>
{</tt><tt><br>
</tt><tt>
ScriptEngine.report("--Main Called ");</tt><tt><br>
</tt><tt>
}</tt><tt><br>
</tt><tt>
}</tt><br>
</blockquote>
<br>
and a question:<br>
is there a way to know if mono_domain_unload was successful or not?
<br>
<br>
I am creating an app domain per script so that I can recompile and
reload the script at will... <br>
I do not detect an error, but the new script seems (not always at
least) not to replace the old one...<br>
Basically, I am doing:<br>
<blockquote><tt>res = mono_domain_set(rootDomain, FALSE);</tt><br>
<tt>mono_domain_unload(monoEngine->domain);</tt><br>
<tt>monoEngine->domain =
mono_domain_create_appdomain("ScriptEngine-sub", NULL);</tt><br>
<br>
<tt>data = readFile(f, &dataLen);</tt><br>
<tt>fclose(f);</tt><br>
<tt>monoEngine->image =
mono_image_open_from_data_with_name(data, dataLen, </tt><br>
<tt> TRUE
/* copy data */, </tt><br>
<tt>
&status, </tt><br>
<tt>
FALSE /* ref only */, </tt><br>
<tt>
monoEngine->fileName);</tt><br>
<tt> free(data);</tt><br>
<tt> if (status != MONO_IMAGE_OK || monoEngine->image == NULL)</tt><br>
<tt> {</tt><br>
<tt> return FALSE;</tt><br>
<tt> }</tt><br>
<br>
<tt> // load the assembly</tt><br>
<tt> monoEngine->assembly =
mono_assembly_load_from_full(monoEngine->image, </tt><br>
<tt>
monoEngine->fileName, </tt><br>
<tt>
&status, FALSE);</tt><br>
<tt> if (status != MONO_IMAGE_OK || monoEngine->assembly ==
NULL)</tt><br>
<tt> {</tt><br>
<tt> mono_image_close(monoEngine->image);</tt><br>
<tt> return FALSE;</tt><br>
<tt> }</tt><br>
</blockquote>
but it does not seem to work everytime.<br>
Lastly, Is there a way to compile cs source without launching a <br>
<blockquote><tt>system("msc.code.cs -target:library");</tt><br>
</blockquote>
thanks in advance<br>
<br>
Pierre<br>
<br>
</body>
</html>
--------------F8FB6A229B538AD8E757E880--
--===============7186825149016498947==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Disposition: inline
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTW9uby1saXN0
IG1haWxsaXN0ICAtICBNb25vLWxpc3RAbGlzdHMuZG90Lm5ldApodHRwOi8vbGlzdHMuZG90Lm5l
dC9tYWlsbWFuL2xpc3RpbmZvL21vbm8tbGlzdAo=
--===============7186825149016498947==--