lanmeimin_
lanmeimin_
2015-08-31 01:29
采纳率: 0%
浏览 4.0k

C#调用C++和opencv生成的dll库文件,其中函数中带有指针

大家好,我用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”)的地址和大小,或无法声明指向它的指针。
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • Cowboy22
    Cowboy22 2021-04-21 12:50

    您好,我看到您调用THFaceImage.dll, 请问这是哪一家公司的人脸库?

    点赞 评论

相关推荐