0

我必须从 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 );

任何想法????

4

0 回答 0