I worked through the problem with him yesterday and simply p/invoking a single native function of the form:  &quot;int smb_init (int value)&quot; is enough to make it crash.<div><br></div><div>The most likely issue I can think of is that there is a symbol clash which is causing libsmb to invoke a mono function instead of it&#39;s own which then causes things to blow up. It&#39;s unlikely to be a calling convention related problem because the stack never unwinds and it does successfully call a bunch of functions and then blows up a dozen or two frames deep. Other than that, there&#39;s very little that could possibly go wrong.</div>
<div><br></div><div>Alan<br><br><div class="gmail_quote">On 6 December 2011 23:11, Alfred Hall <span dir="ltr">&lt;<a href="mailto:ahall@ahall.org">ahall@ahall.org</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
Hi,<br>
<br>
This may explain why smbc_init blows up, but does not explain why<br>
smbc_init2() blows up. In smbc_init2()<br>
the callback is in the unmanaged code. It still blows up.<br>
<br>
Cheers,<br>
Alfred<br>
<div class="HOEnZb"><div class="h5"><br>
On Tue, Dec 6, 2011 at 8:40 PM, Robert Jordan &lt;<a href="mailto:robertj@gmx.net">robertj@gmx.net</a>&gt; wrote:<br>
&gt; Hi,<br>
&gt;<br>
&gt; On 06.12.2011 20:53, Alfred Hall wrote:<br>
&gt;&gt; Good afternoon!<br>
&gt;&gt;<br>
&gt;&gt; I have been trying to P/Invoke into libsmbclient on OSX 10.6 running<br>
&gt;&gt; 64 bit kernel. I compile the samba library myself (version 3.6.0) with<br>
&gt;&gt; -m32 and managed to get a simple stub working in C/C++:<br>
&gt;&gt;<br>
&gt;&gt; static void<br>
&gt;&gt; auth_fn(const char *server, const char *share,<br>
&gt;&gt;      char *workgroup, int wgmaxlen, char *username, int unmaxlen,<br>
&gt;&gt;      char *password, int pwmaxlen)<br>
&gt;&gt; {<br>
&gt;&gt; }<br>
&gt;&gt;<br>
&gt;&gt; smbc_init(auth_fn, 10);<br>
&gt;&gt; smbc_opendir(&quot;smb://myuser:mypass@192.168.x.x/c$&quot;);<br>
&gt;&gt;<br>
&gt;&gt; This works fine, then I created the P/Invokes:<br>
&gt;&gt;<br>
&gt;&gt;          public static void SmbInit()<br>
&gt;&gt;          {<br>
&gt;&gt;              smbc_init(CallBackAuth, 0);<br>
&gt;<br>
&gt; You must pin the delegate passed to smbc_init, either using<br>
&gt; a field or a GCHandle.<br>
&gt;<br>
&gt; Robert<br>
&gt;<br>
&gt; _______________________________________________<br>
&gt; Mono-devel-list mailing list<br>
&gt; <a href="mailto:Mono-devel-list@lists.ximian.com">Mono-devel-list@lists.ximian.com</a><br>
&gt; <a href="http://lists.ximian.com/mailman/listinfo/mono-devel-list" target="_blank">http://lists.ximian.com/mailman/listinfo/mono-devel-list</a><br>
&gt;<br>
_______________________________________________<br>
Mono-devel-list mailing list<br>
<a href="mailto:Mono-devel-list@lists.ximian.com">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>