C DLL 代码如下:
struct tagTest2
{
int aa;
int bb;
};struct tagTest
{
BYTE a;
char ch[10];
int bb;
void *pData;  //用于传递tagTest2
};extern "C" __declspec(dllexport) HANDLE test3(tagTest *pTest)
{
pTest->a = 100;
pTest->bb = 200; tagTest2 *pData = (tagTest2*)pTest->pData; pData->aa = 300;
pData->bb = 600;
return pTest;
}在C# 中的定义:
namespace testmydll
{
    [StructLayout(LayoutKind.Sequential)] 
    struct tagTest
    {
        [MarshalAs(UnmanagedType.U1)]
    public byte a;
        [MarshalAs(UnmanagedType.ByValArray,SizeConst=10)]
    public char[] ch;
        [MarshalAs(UnmanagedType.U4)]
         public int bb;
        [MarshalAs(UnmanagedType.U4)]
        public IntPtr pData;
        
    };    [StructLayout(LayoutKind.Sequential)] 
    struct tagTest2
    {
        [MarshalAs(UnmanagedType.U4)]
        int aa;
        [MarshalAs(UnmanagedType.U4)]
        int bb;
    };
    class testdll
    {
        [DllImport("testdll.dll")] 
        public static extern IntPtr test3(ref  tagTest pTest);    }
}
请问在C# 中这样定义是否正确? 我定义了一个tagTest对象 ,怎么传递tagTest2 对象的指针到tagTest中的pData变量? 谢谢了.