问题描述
- 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); } } }
解决方案
C#安装文件中水晶报表出错的问题
c#中windows窗体调用问题
时间: 2024-10-27 09:24:02