日期:2014-05-17  浏览次数:20998 次

求助如何调用C++ DLL方法,参数不会转换啊。。

static array<byte> ^ compress(array<byte> ^source)//C++ 方法方法名参数


[DllImport(@"lzma_decode_module.dll", EntryPoint = "compress")]
public static extern byte[] compress([MarshalAs(UnmanagedType.LPArray)]byte[] _b);

报错:Cannot marshal 'return value': Invalid managed/unmanaged type combination.
貌似是[MarshalAs(UnmanagedType.LPArray) 这没用对? 我用UnmanagedType.SafeArray和ByValArray都是这个错。。。
应该怎么调用啊???

------解决方案--------------------
array<byte>这个玩意,既然是dll输出的函数,你还是把这个类型换成基本类型的吧,那样在C#里就好转换了。