2011-06-27 182 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

相關問題