【问题标题】:c++ directshow filter Private Interfacec++ directshow过滤器私有接口
【发布时间】:2013-01-11 10:35:18
【问题描述】:

我正在使用直接显示示例 ezrgb24 并尝试公开其私有接口。 在iez.h 文件中有如下代码

DEFINE_GUID(IID_IIPEffect,
0xfd5010a3, 0x8ebe, 0x11ce, 0x81, 0x83, 0x00, 0xaa, 0x00, 0x57, 0x7d, 0xa1);

DECLARE_INTERFACE_(IIPEffect, IUnknown)
{
    STDMETHOD(get_IPEffect) (THIS_
                int *effectNum,         // The current effect
                REFTIME *StartTime,     // Start time of effect
                REFTIME *Length         // length of effect
             ) PURE;

    STDMETHOD(put_IPEffect) (THIS_
                int effectNum,          // Change to this effect
                REFTIME StartTime,      // Start time of effect
                REFTIME Length          // Length of effect
             ) PURE;
};

在构建 dll 之后,我使用 cmd 窗口注册了它。 我应该如何从我们的项目中公开或使用 get_IPEffect() 或 put_IPEffect()?

我的代码如下,但它没有工作

DEFINE_GUID(IID_IIPEffect,
    0xfd5010a3, 0x8ebe, 0x11ce, 0x81, 0x83, 0x00, 0xaa, 0x00, 0x57, 0x7d, 0xa1);
DEFINE_GUID(CLSID_ImageEffect,
    0x8B498501, 0x1218, 0x11CF, 0xAD, 0xC4, 0x00, 0xA0, 0xD1, 0x00, 0x04, 0x1B);

IBaseFilter *pImageEffect = NULL;
chr = CoCreateInstance(CLSID_ImageEffect, NULL, CLSCTX_INPROC_SERVER, 
            IID_IBaseFilter, (void**) &pImageEffect);
chr = pGraph->AddFilter(pImageEffect, L"RGB Resizer");


IIPEffect *pEZrgb24 = NULL;
chr = pImageEffect->QueryInterface(IID_IIPEffect, (void **) &pEZrgb24);

在 IIPEffect 我收到一个错误“'IIPEffect':未声明的标识符” 应该怎么申报?

【问题讨论】:

  • 你把它搞砸了,包括iez.h
  • @RomanR。哦,我需要在我的项目中包含 iez.h 文件吗?
  • 您的 sn-ps 看起来很相关,但显然您的真实代码中的代码 sn-p #2 没有“看到” sn-p #1,因此出现错误。
  • @ShivaKumar 也不需要第二个 IID_IIPEffect 定义。所以看起来iez.h不包括在内。
  • @RomanR。感谢 cmets,我包含了 iez.h,它运行良好。

标签: c++ visual-c++ directshow graphedit


【解决方案1】:

感谢 RomarR 和 Wimmel,我在我的项目中包含了 iez.h,它运行良好

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多