Another &#39;problem&#39; with this approach is size. Due to the fact that the native component I&#39;m using it&#39;s quite big (chrome + qt are quite huge), the final assembly weights a few MBs.. :(<br><br><div class="gmail_quote">

On Sat, Jul 9, 2011 at 2:10 PM, Pablo Ruiz <span dir="ltr">&lt;<a href="mailto:pablo.ruiz@gmail.com">pablo.ruiz@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;">

Well, I managed to do exctly this (extracting embedded .dll/.so &amp; it&#39;s dependencies on Win32/Win64/Linux32/Linux64) on WkHtmlToXSharp (<a href="https://github.com/pruiz/WkHtmlToXSharp" target="_blank">https://github.com/pruiz/WkHtmlToXSharp</a>).<div>


<br></div><div>And I got fine results. It has some limitations (like being able to write on working dir, etc.) but it makes deployment alot easier. I even check if the file exists before extracting to allow onfield upgrade of native assemblies.. <div>

<div></div><div class="h5"><br>
<br><div class="gmail_quote">On Sat, Jul 9, 2011 at 2:05 PM, Robert Jordan <span dir="ltr">&lt;<a href="mailto:robertj@gmx.net" target="_blank">robertj@gmx.net</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">


<div>On 09.07.2011 12:20, Quandary wrote:<br>
&gt; It&#39;s true that p/Invoke + InterOp services do not form a complete solution.<br>
&gt; However, creating a interface in managed code across platforms isn&#39;t<br>
&gt; very difficult.<br>
&gt;<br>
&gt; All you need to do is to pack a x86&amp;x64&amp;ARM&amp;PPC Linux&amp;Windows&amp;Mac<br>
&gt; version of the native dll into the .NET dll&#39;s ressources, then stream<br>
&gt; the respective assembly out on the calling of the constructor, and<br>
&gt; create an abstract class, where you create an instance for the<br>
&gt; respective platform (for example because of structs, where on x64, there<br>
&gt; are different sizes of long + int on Windows&amp;  Linux/UNIX), which you<br>
&gt; can then invoke as an interface.<br>
<br>
</div>Extracting and loading native libraries at run-time won&#39;t work<br>
correctly on sane systems, unless you somehow manage to (1)<br>
extract them into a path already configured as a library path,<br>
(2) using absolute paths in DllImport attributes, (3) generating<br>
DllImport code at run-time or (4) loading the libs and their<br>
exports w/out DllImport&#39;s help (dlopen, LoadLibrary etc.).<br>
<br>
That&#39;s why nobody is using such an approach in real world,<br>
at least not under Unix. Using &lt;dllmap&gt; or a starter shell<br>
script that sets the LD path is by far less complex (a<br>
matter of minutes to develop).<br>
<font color="#888888"><br>
Robert<br>
</font><div><div></div><div><br>
_______________________________________________<br>
Mono-devel-list mailing list<br>
<a href="mailto:Mono-devel-list@lists.ximian.com" target="_blank">Mono-devel-list@lists.ximian.com</a><br>
<a href="http://lists.ximian.com/mailman/listinfo/mono-devel-list" target="_blank">http://lists.ximian.com/mailman/listinfo/mono-devel-list</a><br>
</div></div></blockquote></div><br></div></div></div>
</blockquote></div><br>