C#调用libVLC出错的问题

最初,我参考了
http://www.cnblogs.com/haibindev/archive/2011/12/21/2296173.html
下载源码,并编译,提示出错:堆栈不对齐。
修改了
[DllImport("libvlc", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]之后,再编译,提示
图片说明
调试后发现,在调用vlc _ new 函数之后,并没有成功创建实例,导致报错。
图片说明
但是,我在网上找了很多,竟然发现没有对此问题的回答。
请大神帮忙解答下,如何解决这个问题。
我的编译环境是vs2010 .net4.0
附:

       public static IntPtr libvlc_new(string[] arguments)
        {
            PointerToArrayOfPointerHelper argv = new PointerToArrayOfPointerHelper();
            argv.pointers = new IntPtr[11];

            for (int i = 0; i < arguments.Length; i++)
            {
                argv.pointers[i] = Marshal.StringToHGlobalAnsi(arguments[i]);
            }

            IntPtr argvPtr = IntPtr.Zero;
            try
            {
                int size = Marshal.SizeOf(typeof(PointerToArrayOfPointerHelper));
                argvPtr = Marshal.AllocHGlobal(size);
                Marshal.StructureToPtr(argv, argvPtr, false);

                return libvlc_new(arguments.Length, argvPtr);
            }
            finally
            {
                for (int i = 0; i < arguments.Length + 1; i++)
                {
                    if (argv.pointers[i] != IntPtr.Zero)
                    {
                        Marshal.FreeHGlobal(argv.pointers[i]);
                    }
                }
                if (argvPtr != IntPtr.Zero)
                {
                    Marshal.FreeHGlobal(argvPtr);
                }
            }
        }

1个回答

我也是vs2010下。换成debug模式运行就好

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问