大家好,我用C#调用C++的dll,其中一个函数中有指针,参数的定义在C++中是一个结构体,但是我现在遇到的问题是无法获取托管类型的地址和大小,或无法声明指向它的指针,下面我把这个函数在C++中的定义和我自己转到C#中的定义给大家贴出来,大家帮帮忙,本人属于C++和C#新手。
C++
1. int THFI_Create (short nChannelNum,THFI_Param* pParam)
功能:初始化THFaceImage SDK,只需在应用程序初始化时调用一次
参数:
nChannelNum,通道数,用于多线程的通道,每个线程对应一个通道. 每个线程使用的通道ID从0到nChannelNum-1,如通道数为4,那么每个线程使用的合法通道ID为0,1,2,3
pParam,算法参数
返回值:
Int整型,返回实际成功初始化的通道数
struct THFI_Param
{
int nMinFaceSize;//min face width size can be detected,default is 50 pixels
int nRollAngle;//max face roll angle,default is 30(degree)
bool bOnlyDetect;//only detect face or not(if it's true,only Detect API is enable,Feature API is disable),defaule is false(Detect API is enable,and Feature API is enable)
DWORD dwReserved;//reserved value,must be NULL
THFI_Param()
{
nMinFaceSize=50;
nRollAngle=30;
bOnlyDetect=false;
dwReserved=NULL;
}
};
C#
[StructLayout(LayoutKind.Sequential)]
public struct THFI_Param
{
[FieldOffset(0)]
public Int16 nMinFaceSize;
[FieldOffset(2)]
public Int16 nRollAngle;
[FieldOffset(4)]
public Boolean bOnlyDetect;
[FieldOffset(6)]
public UInt32? dwReserved;
};
[DllImport("THFaceImage.dll", EntryPoint = "THFI_Create", CharSet = CharSet.Auto)]
unsafe static extern int THFI_Create(Int16 nChannelNum, THFI_Param* pParam);
THFI_Create显示错误 CS0208: 无法获取托管类型(“WindowsFormsApplication1.Form1.THFI_Param”)的地址和大小,或无法声明指向它的指针。