lanmeimin_ 2015-08-30 17:29 采纳率: 0%
浏览 4055

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 2021-04-21 04:50
    关注

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

    评论
    编辑
    预览

    报告相同问题?

    手机看
    程序员都在用的中文IT技术交流社区

    程序员都在用的中文IT技术交流社区

    专业的中文 IT 技术社区,与千万技术人共成长

    专业的中文 IT 技术社区,与千万技术人共成长

    关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

    关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

    客服 返回
    顶部