最初,我参考了
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);
}
}
}