【问题标题】:Why LoadLibrary() fail's on libvlc.dll when I changed the target framework in C#当我在 C# 中更改目标框架时,为什么 LoadLibrary() 在 libvlc.dll 上失败
【发布时间】:2014-10-01 11:46:12
【问题描述】:

我在c#中遇到了一个奇怪的问题...
我试图通过 VLC 库连接到 ONVIF 摄像机(告诉我是否有更好的方法)
我在 NuGet 上找到了一个很好的预实现库,叫做 nVLC,然后我就使用了它,它非常好,
但是当我在c#中更改目标框架时,我意识到nVLC的目标框架与我选择的不同,
当我将目标框架改回 4.0(作为 nVLC 的)时,我遇到了一个奇怪的 LibVlcInitException 异常,
然后我下载了 nVLC 源代码和调试数据库,以找出 nVLC 中的问题
最后我发现异常不在nVLC的代码中,而是在C#内部的某个地方 处理外部方法的库加载机制。
我什至尝试在我的项目中使用内核方法 LoadLibrary() 加载 libvlc.dll 但这 一个像以前一样失败......

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. 我想知道是否有更好的库可以用更少的代码(仅 H264)连接到 ONVIF 相机。

谢谢...

【问题讨论】:

  • 你的进程的位数是否发生了某种变化?
  • 不!甚至在我重建项目时也会发生。
  • 错误详情是什么??
  • nVLC 上的这个:无法初始化 libVLC。可能的原因:某些参数可能不正确。 VLC dll 的版本不匹配。
  • 如何使用正确的框架版本从头开始重建您的项目?这可能比尝试解决奇怪的错误版本不匹配错误更容易。

标签: c# .net vlc libvlc onvif


【解决方案1】:

经过一周的辛勤工作,我找到了答案!!
这是因为 nVLC 的查找 VLC 安装路径的方式...

如果您安装了 x64 VLC,这肯定会在注册表中添加一个名为“SOFTWARE\VideoLAN\VLC”的键。
然后在 nVLC 中检查进程(Environment.Is64BitProcess),如果它是 x64,则从“SOFTWARE\VideoLAN\VLC”获取 VLC 安装路径(因为我安装了 x86 版本的 VLC,所以我缺少该路径)但如果进程是 x86,它会搜索在 VLC 的“SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall”中。

希望能帮到你...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-12
    • 2021-10-11
    • 2014-01-01
    • 1970-01-01
    相关资源
    最近更新 更多