110,536
社区成员
发帖
与我相关
我的任务
分享
struct Node{
int cx;
char* str;
double dNum;
};
extern "C" __declspec(dllexport) int fnGetStru(Node* pNode);
/*引用C++的dll*/
[DllImport("CPlusDll.dll")]
public static extern int fnGetStru(ref Node node);
/*定义对应的结构体*/
[StructLayout(LayoutKind.Sequential)]
public struct Node
{
[MarshalAs(UnmanagedType.I4)]
public int cx;
[MarshalAs(UnmanagedType.LPStr)]
public String str;
[MarshalAs(UnmanagedType.R8)]
public Double dNum;
}
struct Node{
int cx;
char* str;
double dNum;
};
extern "C" __declspec(dllexport) int fnGetStru(Node* pNode)
{
return 1;
};
using System;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
class MyClass
{
/*引用C++的dll*/
[DllImport("CPlusDll.dll")]
public static extern int fnGetStru([MarshalAs(UnmanagedType.LPArray, SizeConst = 4)]Node[] node);
/*定义对应的结构体*/
[StructLayout(LayoutKind.Sequential)]
public struct Node
{
[MarshalAs(UnmanagedType.I4)]
public int cx;
[MarshalAs(UnmanagedType.LPStr)]
public String str;
[MarshalAs(UnmanagedType.R8)]
public Double dNum;
}
public static void Main()
{
Node[] node_array;
node_array = new Node[4];
fnGetStru(node_array);
}
}
[DllImport("CPlusDll.dll")]
public static extern int fnGetStru([MarshalAs(UnmanagedType.LPArray, SizeConst = 4)]ref Node node);
public static extern int fnGetStru(ref int size,[MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 0)]ref Node node);
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
[DllImport("CPlusDll.dll")]
public static extern int fnGetStru([MarshalAs(UnmanagedType.LPArray, SizeConst = 4)]ref Node node);