向QuartzTypeLib添加程序集引用

3

我是一名使用Visual Studio 2008的新程序员。我该如何添加对QuartzTypeLib的引用?我已经检查了添加引用文件夹,但在.net或com参考库中没有看到Quartz库。当尝试编译代码时,我收到一个指出缺少程序集引用的错误。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using QuartzTypeLib;

namespace DirectShowCsharp
{
    class Program
    {
        static void Main(string[] args)
        {

       }
    }
}

http://msdn.microsoft.com/en-us/library/wkze6zky%28v=vs.90%29.aspx - opewix
请参考此答案,了解如何使用这个库的最简示例。 - sɐunıɔןɐqɐp
3个回答

1
据我所知,DirectShow 被微软认为已经过时了,这可能是为什么最新版本的 Visual Studio 没有包含此程序集的原因。
我不知道如何自动化第一个操作,但它只需要在第一次构建之前执行一次。
  1. 运行 tlbimp 工具(在您的情况下路径将不同):

    "C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\TlbImp.exe" %windir%\system32\quartz.dll /out:QuartzTypeLib.dll

  2. 将生成的 QuartzTypeLib.dll 添加为 COM 引用到您的项目中(在“解决方案资源管理器”中单击项目名称上的右键,然后选择“添加”菜单项,接着选择“引用”)。

  3. 在您的项目中,展开“引用”,找到 QuartzTypeLib 引用。右键它并选择属性,将“嵌入互操作类型”更改为 false。(否则,您将无法在您的项目中使用 FilgraphManagerClass(以及可能还有其他一些类))。


这个答案对我很有用。我只能通过在项目设置中禁用“Prefer 32-bit”选项来使QuartzTypeLib.dll的FilterGraph.RenderFile()正常工作,否则我会收到异常:System.Runtime.InteropServices.COMException: Exception from HRESULT: 0x80040266 - sɐunıɔןɐqɐp

1

有一个完整的解决方案,使用QuartzTypeLib来播放视频。

Player

C#中的DirectShow MediaPlayer

源代码的相关部分如下:

using QuartzTypeLib;

FilgraphManager FilterGraph = new FilgraphManager();
FilterGraph.RenderFile("test.mp3");
FilterGraph.Run();
// ...
FilterGraph.Stop();

1
请参考我在Vlad的答案中关于“Prefer 32-bit”标志的评论。 - sɐunıɔןɐqɐp

0
在添加引用中,选择左侧的浏览,然后选择右下角的浏览,并浏览到您的库所在的位置。

唯一的问题是我在引用文件夹中没有看到石英库。 - Kehlin Swain
你应该浏览到库所在的文件夹。 - niceman
如果库已安装,我希望它能在这个文件夹中找到: C:\Windows\Microsoft.NET\assembly\GAC_32 - niceman
C:\Windows\Microsoft.NET\assembly\GAC_MSIL - niceman
除非您使用 tlbimp 生成它,否则此库不存在。请参见 Vlad 的答案。 - sɐunıɔןɐqɐp

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接