请教大家一个问题,现在有个第三方的C++ PCIDLL.dll文件,在自己开发的C++工程中运行正常,现在想在C#项目中直接调用PCIDLL.dll文件,测试没能通过,请大家指点C#代码哪里有误,谢谢!C++主要代码如下:------------------------------------------------typedef struct _CH_PARAM 
{
    int PeakNum;
    float p_PeakWave[400];
    float p_PeakPower[400];
}CH_PARAM,*PCH_PARAM;typedef struct _DEV_CH_PARAM 
{
    DWORD Count;
    CH_PARAM PeakCH[10];
}DEV_CH_PARAM,*PDEV_CH_PARAM;extern BOOL _stdcall Pci_Dev1_ReadChnData(int ReadCnt,int WriteCnt,BOOL repeatflag,DEV_CH_PARAM *pData,int *RecordMax);调用:
int nReads1;
int nWrites1;
PDEV_CH_PARAM* pDataEx = new PDEV_CH_PARAM[2];
pDataEx[0] = new DEV_CH_PARAM[1000]; 
pDataEx[1] = new DEV_CH_PARAM[1000];int nCount;
float fWave1 = 0.0f;
float fwave2 = 0.0f;
nWrites1 = 1;
Pci_Dev1_ReadChnData(nReads1, nWrites1, false, pDataEx[0], &nCount);               
fWave1 = pDataEx[0][0].PeakCH[0].p_PeakWave[0];
fWave2 = pDataEx[0][0].PeakCH[0].p_PeakWave[1];C#主要代码如下:------------------------------------------------
    [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
    public struct CH_PARAM
    {
        public int PeakNum;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 80, ArraySubType = UnmanagedType.R4)]
        public float[] p_PeakWave;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 400, ArraySubType = UnmanagedType.R4)]
        public float[] p_PeakPower;
    }    [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
    public struct DEV_CH_PARAM
    {
        public uint Count;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 10, ArraySubType = UnmanagedType.Struct)]
        public CH_PARAM[] PeakCH;
    }[DllImport("PCIDLL.dll")]
public static extern bool Pci_Dev1_ReadChnData(int ReadCnt, int WriteCnt, bool repeatflag, ref DEV_CH_PARAM pData, ref int RecordMax);
        
调用:
int nWrites1;
int nReads1;
DEV_CH_PARAM[][] pDataEx = new DEV_CH_PARAM[2][];
pDataEx[0] = new DEV_CH_PARAM[1000];
pDataEx[1] = new DEV_CH_PARAM[1000];int nCount;
float fWave1 = 0.0f;
float fwave2 = 0.0f;
nWrites1 = 1;Pci_Dev1_ReadChnData(nReads1, nWrites1, false, ref pDataEx[0][0], ref nCount);
fWave1 = pDataEx[0][0].PeakCH[0].p_PeakWave[0];
fWave2 = pDataEx[0][0].PeakCH[0].p_PeakWave[1];