我必须从c#调用VM32VBWRAP.dll。它是一个从代码管理pvcs的库。我可以调用所有方法 哪个没有任何ref参数。但我不能用ref参数调用方法。
我总是收到这个错误:
“尝试读取或写入受保护的内存。这通常表示其他内存已损坏。” 在System.StubHelpers.MngdNativeArrayMarshaler.ConvertContentsToManaged(IntPtr pMarshalState,Object& pManagedHome,IntPtr pNativeHome) 在LibraryPanello.SourceControl.Pvcs.PvcsGetLockInfoVB(Int32 archiveType,String pathAndFileNameServer,String pathAndFileNameLocal,String usernameInPVCS,Byte []& version,Byte []& versionNew,Byte []& usernameOutPVCS,Int16 info,Byte flag)
我的声明是:
[DllImport("VM32VBWRAP.dll", CharSet = CharSet.Ansi, SetLastError = true,
EntryPoint = "_wPvcsGetLockInfoVB@36")]
static extern int PvcsGetLockInfoVB(
int archiveType, string pathAndFileNameServer,
string pathAndFileNameLocal, string usernameInPVCS,
[MarshalAs(UnmanagedType.LPArray, SizeConst = 64)] ref byte[] version,
[MarshalAs(UnmanagedType.LPArray, SizeConst = 64)] ref byte[] versionNew,
[MarshalAs(UnmanagedType.LPArray, SizeConst = 64)] ref byte[] usernameOutPVCS,
short info, byte flag );
任何想法????