2014-10-01 72 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”中进行搜索。

希望能帮到你......

相关问题