<div class="gmail_quote">On 8 July 2011 18:57, Alex Corrado <span dir="ltr">&lt;<a href="mailto:alexander.corrado@gmail.com">alexander.corrado@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
Tom,<br>
<div class="im"><br>
On Fri, Jul 8, 2011 at 1:40 PM, Tom Spink &lt;<a href="mailto:tspink@gmail.com">tspink@gmail.com</a>&gt; wrote:<br>
&gt; Why do you think that?  I&#39;ve actually pondered this approach for a while, as<br>
&gt; it could potentially bring a couple of benefits.<br>
<br>
</div>I am curious to know what benefits you are referring to. The original<br>
<div class="im">poster said:<br>
<br>
&gt;&gt;&gt; Without a doubt, every case where I&#39;ve wanted/needed to use C++.NET has been<br>
&gt;&gt;&gt; to create a mixed mode assembly with the intent of creating a clean,<br>
&gt;&gt;&gt; optimized .NET interface for some piece of unmanaged code. If P/Invoke and<br>
&gt;&gt;&gt; System.Runtime.InteropServices formed a complete solution for importing<br>
&gt;&gt;&gt; native functionality into .NET, then I doubt Microsoft would have bothered<br>
&gt;&gt;&gt; allowing for mixed-mode assemblies at all.<br>
<br>
</div>I tend to agree with this statement. Mixed-mode assemblies, whether in<br>
PE or some other format, strike me as hackish and are not portable<br>
across platforms. How managed and native code are packaged (same<br>
binary or separately) is not really related to the problem of the two<br>
interoperating. It would be perfectly possible to create a<br>
source-compatible C++/CLI implementation that emits native code in a<br>
platform native binary, and managed code in an ECMA CLI native (PE)<br>
binary.<br>
<br>
Best,<br>
<font color="#888888"><br>
Alex Corrado<br>
</font></blockquote></div><br><br><div>Hi Alex,</div><div><br></div><div>Interestingly enough, I wasn&#39;t thinking about mixed-mode assemblies at all!  I was just thinking about normal assemblies being packaged in an ELF container, rather than a PE container.  (I must have lost track of the conversation)</div>
<div><br></div><div>The reason being, on a platform that supported loading ELF binaries, you could get to load the mono runtime by emitting native code in in the appropriate ELF section, for the entry-point.  Of course, on Linux you have binfmt_misc - but personally, this has always felt like a hack.</div>
<div><br></div><div>And, I completely agree that mixed-mode assemblies are, even by definition, non-portable - for the reasons you&#39;ve already given.<br clear="all"><br>-- <br>Tom Spink<br>
</div>