无法在directshow.net中实例化自定义过滤器

时间:2014-03-31 10:45:10

标签: c# directshow directshow.net

这是我尝试实例化我的过滤器。

直接在激活器上使用guid

Guid myfilterGuid = Guid.Parse("067216DE-E6A1-49C9-A016-074624C20FE5");
Type t = Type.GetTypeFromCLSID(myfilterGuid);
myfitlter = (IBaseFilter)Activator.CreateInstance(t);

这返回了一个没有注册的""错误。

课程定义

myfitlter = new MyFilter() as IBaseFilter;

MyFilter的位置:

using System;
using System.Runtime.InteropServices;
namespace YourControlService
{

    [Guid("067216DE-E6A1-49C9-A016-074624C20FE5")]
    public class MyFilter
    {
        public MyFilter()
        {

        }
    }
}

返回null。

该类已注册,我可以在Graphstudionext或c ++代码中使用它,因此我不知道为什么它不能用于c#。此外,我不确定我是否正确地在第二种方法中定义了代理类。

奖金问题

为什么我的代码中的内容非法:

[Guid("067216DE-E6A1-49C9-A016-074624C20FE5")]
public class MyFilter
{
    public MyFilter(); //Constructor without codeblock; does not compile

}

但是这里还可以吗?

namespace DirectShowLib
{
    [Guid("E2510970-F137-11CE-8B67-00AA00A3F1A6")]
    public class AviDest
    {
        public AviDest(); //Constructor without codeblock; compiles
    }
}

0 个答案:

没有答案