<br><br><div class="gmail_quote">On Fri, Aug 17, 2012 at 4:16 PM, David Jeske <span dir="ltr"><<a href="mailto:davidj@gmail.com" target="_blank">davidj@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="gmail_quote"><span style="color:rgb(34,34,34);font-size:13px;font-family:Verdana,Geneva,Helvetica,Arial,sans-serif">I have a C# wrapper for a native DLL which exists on both windows and UNIX. However, it doesn't work on Mono because of a behavior difference between Mono and </span><a href="http://MS.NET" target="_blank">MS.NET</a>. <br style="color:rgb(34,34,34);font-size:13px;font-family:Verdana,Geneva,Helvetica,Arial,sans-serif">
<br>


<br style="color:rgb(34,34,34);font-size:13px;font-family:Verdana,Geneva,Helvetica,Arial,sans-serif"><span style="color:rgb(34,34,34);font-size:13px;font-family:Verdana,Geneva,Helvetica,Arial,sans-serif">My questions: </span><br style="color:rgb(34,34,34);font-size:13px;font-family:Verdana,Geneva,Helvetica,Arial,sans-serif">



<br style="color:rgb(34,34,34);font-size:13px;font-family:Verdana,Geneva,Helvetica,Arial,sans-serif"><span style="color:rgb(34,34,34);font-size:13px;font-family:Verdana,Geneva,Helvetica,Arial,sans-serif">(1) Why is Mono <span><span>complaining</span></span> about this? AFAIK, in the CLR, an unsafe <span><span>struct</span></span> pointer is not a marshalled structure, it's a value type. </span></div>
</blockquote><div><br></div><div>The marshal code plays it safe, so when we don't know how to marshal a given parameter we proactively fail.</div><div><br></div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="gmail_quote"><span style="color:rgb(34,34,34);font-size:13px;font-family:Verdana,Geneva,Helvetica,Arial,sans-serif">(2) Why would it suggest using ByRef? <span><span>ByRef</span></span> is for <span><span>managed</span></span> pointers to managed data. This is a value-type pointer value.  AFAIK, ByRef is not capable of doing anything here, because the pointer is just a "typed" IntPtr value type. </span></div>
</blockquote><div><br></div><div>This is because byrefs are GC visible while pointers are not, or something. Well, honestly, no idea.</div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="gmail_quote"><div><span style="color:rgb(34,34,34);font-size:13px;font-family:Verdana,Geneva,Helvetica,Arial,sans-serif">(3) I think this used to work <span><span>in</span></span> older versions of mono. Is there some particular reason the behavior has changed? Do folks agree this is a problem?</span></div>
</div></blockquote><div><br></div><div>The code that made this ilegal is from 2005 so, yeah, in some very very old version of mono it did work. Anyway, we've reverted to allow</div><div>any pointer to structs on the upcoming 2.12 release. The change is f8f2da07c9b0a609f07aa342b49e4dcb7f6bf6b4.</div>
<div><br></div><div><br></div></div>