Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Windows Search中ISTEMER接口的C定义_C#_Pinvoke_Windows Search - Fatal编程技术网

C# Windows Search中ISTEMER接口的C定义

C# Windows Search中ISTEMER接口的C定义,c#,pinvoke,windows-search,C#,Pinvoke,Windows Search,有人能帮我把COM接口定义翻译成C语言吗,或者推荐一个工具来实现这一点?我在谷歌和pinvoke.net上搜索,找不到C签名 接口定义如下: interface IStemmer { HRESULT GetLicenseToUse( [out] WCHAR const **ppwcsLicense ); HRESULT Init( [in] ULONG ulMaxTokenSize, [out] BOOL pfLic

有人能帮我把COM接口定义翻译成C语言吗,或者推荐一个工具来实现这一点?我在谷歌和pinvoke.net上搜索,找不到C签名

接口定义如下:

interface IStemmer {
    HRESULT GetLicenseToUse(
       [out]  WCHAR const **ppwcsLicense
    );  

    HRESULT Init(
       [in]   ULONG ulMaxTokenSize,
       [out]  BOOL pfLicense
    );

    HRESULT GenerateWordForms(
        [in]  WCHAR const *pwcInBuf,
        [in]  ULONG cwc,
        [in]  IWordFormSink *pWordFormSink
    );
}

interface IWordFormSink {
    HRESULT PutWord(
        [in]  const WCHAR *pwcInBuf ,
        [in]  ULONG cwc
    );

    HRESULT PutAltWord(
        [in]  const WCHAR *pwcInBuf ,
        [in]  ULONG cwc
    );
}

您可以使用以下界面

[ComImport]
[Guid("EFBAF140-7F42-11CE-BE57-00AA0051FE20")]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IStemmer
{
    void Init([MarshalAs(UnmanagedType.U4)] int ulMaxTokenSize, [MarshalAs(UnmanagedType.Bool)] out bool pfLicense);
    void GenerateWordForms([MarshalAs(UnmanagedType.LPWStr)] string pwcInBuf,
        [MarshalAs(UnmanagedType.U4)] int cwc,
        [MarshalAs(UnmanagedType.Interface)] IWordFormSink pStemSink);
    void GetLicenseToUse([MarshalAs(UnmanagedType.LPWStr)] out string ppwcsLicense);
}