1

任何人都可以帮助我将 COM IStemmer 接口定义翻译成 C# 或建议工具来做到这一点吗?我在 Google 和 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
    );
}
4

1 回答 1

0

可以使用如下界面

[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);
}
于 2013-04-09T12:35:05.707 回答