Adding assembly reference to QuartzTypeLib

2020-04-10 22:56发布

问题:

I am a new programmer using Visual Studio 2008. How can I add an reference to QuartzTypeLib. I have already checked the add reference folder and do not see a library for Quartz in the .net or com reference library. When trying to compile code I am receiving an error that states missing assembly reference.

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

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

       }
    }
}

回答1:

AFAIK, DirectShow is considered as obsolete by Microsoft, probably this is the reason for not including this assembly into the latest Visual Studio.

I don't know how to automate the 1st action, but it is needed only once before the first build.

  1. Run tlbimp tool (in your case path will be different):

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

  2. Add generated QuartzTypeLib.dll as a COM-reference to your project (click right mouse button on the project name in "Solution Explorer", then select "Add" menu item and then "Reference")

  3. In your Project, expand the "References", find the QuartzTypeLib reference. Right click it and select properties, and change "Embed Interop Types" to false. (Otherwise you won't be able to use the FilgraphManagerClass in your project (and probably a couple of other ones)).



回答2:

There is a complete solution that uses QuartzTypeLib to play videos.

DirectShow MediaPlayer in C#

The relevant part of the source code is:

using QuartzTypeLib;

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


回答3:

In add reference select Browse on left and then select browse in the right down corner and browse to the location of your library .