2014-10-01 24 views
0

我在C#中遇到一個奇怪的問題...
我試圖通過VLC庫(告訴我連接到ONVIF相機,如果有一個更好的方法)
我發現了一個很好的預先實現的庫,在NuGet上調用nVLC,然後我用它,它非常好,
但是當我改變了c#中的目標框架後,我意識到nVLC的目標框架是不同的從我選擇的一個,
當我將目標框架改回4.0(作爲nVLC的)我有一個奇怪的LibVlcInitException異常,
然後,我下載了nVLC源代碼和debu g數據庫以及找出nVLC中有什麼問題最後,我發現該異常不在nVLC的代碼中,而是在C#內部的某處處理extern方法的庫加載機制。
我甚至試過在我的項目中使用的內核調用LoadLibrary方法()來加載libvlc.dll但這 一個未能像以前一樣......爲什麼調用LoadLibrary()失敗上libvlc.dll的時候我改變了C#的目標框架

m_hMediaLib = LibVlcMethods.libvlc_new(args.Length, args); //nVLC internal line that error occures. 
//and: 
IMediaPlayerFactory _factory = new MediaPlayerFactory(); //in my code. 

我更喜歡使用VLC連接到我的相機ONVIF(我相機給我一個H264格式)。

最後:

  1. 我想知道什麼是與調用LoadLibrary問題()。
  2. 我想知道是否有更好的庫連接到ONVIF相機與較少的代碼(JUST H264)。

謝謝...

+0

你的過程的位數是否有點變化? – usr 2014-10-01 11:50:02

+0

不!甚至在重建項目時發生。 – 2014-10-01 11:52:08

+0

錯誤的細節是什麼? – Ian 2014-10-01 11:52:11

回答

1

我找到了答案,一個辛勤工作一週後!
這是因爲nVLC的方式找到VLC安裝路徑...

如果您已經安裝了64位VLC這將增加一個名爲「SOFTWARE \ VideoLAN的\ VLC」鍵進入系統登錄是肯定的。
然後在nVLC中檢查進程(Environment.Is64BitProcess),如果它是x64從「SOFTWARE \ VideoLAN \ VLC」(我錯過了,因爲我安裝了x86版本的VLC)得到VLC安裝路徑,但是如果進程是x86它在VLC中的「SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Uninstall」中進行搜索。

希望能幫到你......

相關問題