我必须从 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 );
任何想法????