[Mono-dev] string marshalling conversion 34 not implemented

Josh TwoOneSix at thatclothingco.com
Sat Apr 5 18:17:03 EDT 2008


On Sat, Apr 5, 2008 at 3:42 PM, Jonathan Chambers <joncham at gmail.com> wrote:

> Hello Josh,
>      You didn't post the signature of your pinvoke function, but it looks
> like you are trying to marshal a string using UnmanagedType.VBByRefStr.
> This does seem to be a limitation in mono (and not fixed in svn head),
> however the docs seem to indicate that this should only be used for VB
> compatibility. If you are changing/return the string in unmanaged, you need
> to use a StringBuilder. If you are only passing a string in, you can just
> pass a string (and specify the native string type).
>
> See this great page on the wiki for more info:
>
> http://www.mono-project.com/Interop_with_Native_Libraries
>
> Thanks,
> Jonathan
>
> 2008/4/4 Josh <TwoOneSix at thatclothingco.com>:
>
> > Mono is throwing me the error "string marshalling conversion 34 not
> > implemented" when I'm attempting to call a function to libvlc.dll from my
> > code. The other calls to the DLL work fine, but the AddTarget Function
> > causes the error. I'm getting the same results on both Windows and Linux
> > versions.
> >
> > [AddTarget Function]
> > ===============================
> > public Err AddTarget(string Target)
> > {
> >     if ((m_iVlcHandle == -1)) {
> >         m_strLastErr = "LibVlc is not initialzed";
> >         return Err.NoInit;
> >     }
> >     Err enmErr = Err.Success;
> >     try {
> >         enmErr = VLC_AddTarget(m_iVlcHandle, Target, null, 0,
> > (int)Mode.Append, (int)Pos.Close);
> >     }
> >     catch (Exception ex) {
> >         m_strLastErr = ex.Message;
> >         return Err.Execption;
> >     }
> >     if (((int)enmErr < 0)) {
> >         m_strLastErr = VLC_Err((int)enmErr);
> >         return enmErr;
> >     }
> >     // OK
> >     return Err.Success;
> > }
> > ===============================
> >
> > [Mono Details - Windows]
> > ===============================
> > Mono JIT compiler version 1.9 (tarball)
> > Copyright (C) 2002-2007 Novell, Inc and Contributors.
> > www.mono-project.com
> >         TLS:           normal
> >         GC:            Included Boehm (with typed GC)
> >         SIGSEGV:       normal
> >         Notification:  Thread + polling
> >         Architecture:  x86
> >         Disabled:      none
> > ===============================
> >
> > [Mono Details - Linux]
> > ===============================
> > Mono JIT compiler version 1.9 (tarball)
> > Copyright (C) 2002-2007 Novell, Inc and Contributors.
> > www.mono-project.com
> >         TLS:           __thread
> >         GC:            Included Boehm (with typed GC)
> >         SIGSEGV:       normal
> >         Notifications: epoll
> >         Architecture:  x86
> >         Disabled:      none
> > ===============================
> >
> > Any ideas? Might this be fixed in HEAD? I'm also up to using a different
> > media player that is "known to work" in mono.
> >
> > Josh
> >
> > _______________________________________________
> > Mono-devel-list mailing list
> > Mono-devel-list at lists.ximian.com
> > http://lists.ximian.com/mailman/listinfo/mono-devel-list
> >
> >
>

Jonathan, I think that the code I'm using was converted from a VB source.
Here is the VB PInvoke function I dug up from that code:
[code]
Private Declare Function VLC_AddTarget Lib "libvlc" (ByVal iVLC As Integer,
ByVal Target As String, ByVal Options() As String, ByVal OptionsCount As
Integer, ByVal Mode As Integer, ByVal Pos As Integer) As Err
[/code]

That URL you provided looks like it's going to be spot-on what I need to fix
the problem, thank you!. If I come across any other issues I'll post back.
Also, if anyone knows of a working mono sample using libvlc it would be much
appreciated.

Thanks again.

Josh
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.ximian.com/pipermail/mono-devel-list/attachments/20080405/ff198e71/attachment.html 


More information about the Mono-devel-list mailing list