2011-06-27 179 views
3

我有一个C#DirectShow.Net应用程序,我想测试它在其他计算机上以发行模式运行。我怎样才能确保我的程序能够运行在其他没有包含windows sdk和它可用的过滤器的机器上?如何在其他计算机上运行DirectShow.net应用程序

我将不得不包括dirctshow DLL等,但我能做些什么关于过滤器本身?

更新: 我有虚拟机来运行它,但此外我怎么能确保某个directx过滤器是在计算机上,如果它不是,抓住DLL并从代码注册到计算机?

编辑: 我有注册的DLL后,我运行我的程序。它没有运行,所以我抓住了Graphstudio,并将我的程序图形附加到graphstudio,没有任何过滤器连接,当我尝试手动连接它们时,它们拒绝连接。

EDIT2:

Can you post more details about the scenario you are having problems with? 

我正在我的应用程序,它在我的Windows 7工作的32位机器上我的VirtualBox的VM。 virtualbox不会允许我访问我的USB设备用于流式传输目的,所以我注释了依赖它的代码。当我运行它时,过滤器不会连接。我做了一些测试,并尝试重新创建没有源代码的图形,并且它们不会连接在一起,因此实际上可能是问题所在。

OS version? 

目前,我正在运行32位XP的VirtualBox虚拟机

which filters you are using? 

我使用

Source -> Smart tee (capture) -> GMFBridgeSinkFilter 
      Smart tee (preview) -> AVI Decompressor -> Video REnderer 

GMFBridgeSource -> ffdshow video encoder -> avi mux -> File writer 

(W)riter已被小写一些奇怪的原因。开发机具有(W)riter和(W)riter

Which filters do you have there that you are not using? 

你的意思是这是OS或过滤器,我把代码中的标准,我不连接到?

You could also try with the original GraphEdit instead of GraphStudio, and you could debug your application remotely and see where it is failing exactly. 

Graphedit只在全窗口sdk进来,这是一个痛苦下载im的地方。

+1

恕我直言,最好的方法是使用虚拟机。您可能无法获得预期的性能,但您可以尝试不同的配置和操作系统版本。 – HiperiX

+1

SDK安装过滤器?这对我来说是新闻。你真的尝试过吗? –

+0

试过了什么?我有我的开发机器与7个不同的Windows SDK版本,我创建了一个应用程序合并directshow过滤器。我将应用程序移动到我的一台虚拟机上,然后我注册了相应的DLL(directshowlib,gmfbridge,ffdshow等)。我运行该应用程序,但它不会运行。我下载graphstudio来查看程序,并没有任何过滤器连接,他们不会连接,即使在graphstudio – Grant

回答

1

下面是一些验证,你可以做一个列表:

  • 作为@HiperiX说,这是一个好主意 在清洁 系统来测试您的应用程序,可能使用一些 虚拟化软件。如果你需要 来支持Win XP,那么 也是一个不错的想法,因为 有几个DirectShow过滤器 只能在Win Vista 及更高版本中使用。
  • 关于要求的过滤器,部分 可能由Windows提供。 那些不是,您必须提供 他们并在您的应用程序的安装 过程中在目标 系统中注册它们。我会 在这种情况下建议从视觉 工作室创建一个 安装项目,并附加您所有的 依赖项dlls那里。对于手册 安装,您可以将 过滤器复制到应用程序的文件夹 ,并使用命令行中的regsvr32 filtername.ax进行注册。
  • 一个细节,你将需要采取 照顾的是64位 版本的Windows兼容,因为你不能 使用过滤器专为32位本机 模式从64个应用程序。如果 您的应用程序在 .NET developped并用AnyCPU 模式建成,.NET JIT将用它创建64位 代码和32倍的DLL 将无法​​加载。所以,如果你是 使用32位DLL我建议 建立你的.net应用与 CPU Type = X86。您可以在项目配置 Visual Studio中将此模式设置为 。
  • 根据您的过滤器如何创建 ,您可能还需要安装 Visual c++ redistributable files
  • 关于这句话:

我做了一些测试,并试图重新创建图表没有来源,也不会连接在一起

这当然是一个 问题,你不能创建图 没有源过滤器和 目标过滤器。源过滤 将在大体上判断内容 格式,压缩,色彩空间等, 等。为了测试这个 应用程序与虚拟系统,您需要 提供给您的 USB端口的虚拟化操作系统 内直达并在那里安装您的 捕获设备的驱动程序,如在真实的 系统中。否则DirectShow不会 检测您的设备。

+0

有没有办法可以从代码运行regsvr32?我可以进行手动安装,但我确定有人会抓住它,不知道该怎么做,并抱怨 – Grant

+0

@Grant请参阅我编辑的答案以获取更多信息。 – yms

+0

@yms ok,你知道我的编辑:问题更新吗? – Grant

相关问题