Почему LoadLibrary() не работает с libvlc.dll, когда я изменил целевую структуру в C#

Я столкнулся со странной проблемой в c#...
Я пытался подключиться к ONVIF-камере через библиотеку VLC (скажите, есть ли лучший способ)
И я нашел хорошую предварительно реализованную библиотеку под названием nVLC на Затем я использовал NuGet, и это было очень хорошо,
Но когда я изменил целевую структуру в c#, ​​я понял, что целевая среда nVLC отличается от той, которую я выбрал,
И когда я изменил целевую структуру обратно до 4.0 (как у nVLC) У меня есть странное исключение LibVlcInitException,
Затем я загрузил исходный код nVLC и базу данных отладки, чтобы выяснить, что не так в nVLC
Наконец я обнаружил, что исключение не в коде nVLC, но где-то во внутреннем механизме загрузки библиотеки C#, который обрабатывает внешние методы.
Я даже пытался загрузить libvlc.dll, используя метод ядра LoadLibrary() в моем проекте, но этот, как и раньше, не удался...

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 с меньшим количеством кода (ПРОСТО H264).

Спасибо...


person Ali Mousavi Kherad    schedule 01.10.2014    source источник
comment
Разрядность вашего процесса как-то изменилась?   -  person usr    schedule 01.10.2014
comment
Нет! даже происходит, когда я перестраиваю проект.   -  person Ali Mousavi Kherad    schedule 01.10.2014
comment
Каковы подробности ошибки??   -  person Ian    schedule 01.10.2014
comment
это на nVLC: не удалось инициализировать libVLC. Возможные причины: Некоторые аргументы могут быть неверными. Несоответствие версии DLL VLC.   -  person Ali Mousavi Kherad    schedule 01.10.2014
comment
подождите, чтобы получить ошибку в LoadLibrary().   -  person Ali Mousavi Kherad    schedule 01.10.2014
comment
Когда LoadLibrary возвращает 0, Marshal.GetLastWin32Error() также возвращает 0!!   -  person Ali Mousavi Kherad    schedule 01.10.2014
comment
Как насчет того, чтобы перестроить свой проект с нуля, используя правильную версию фреймворка? Это может быть проще, чем пытаться устранить странную ошибку несоответствия версии ошибки.   -  person Martin Liversage    schedule 01.10.2014
comment
Какая?? здесь миллион строк кода, чувак!!!   -  person Ali Mousavi Kherad    schedule 01.10.2014


Ответы (1)


Я нашел ответ после напряженной рабочей недели!!
Это из-за способа nVLC найти путь установки VLC...

Если вы установили x64 VLC, это добавит ключ с именем «ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ». \VideoLAN\VLC" в реестр обязательно.
Затем в nVLC он проверяет процесс (Environment.Is64BitProcess), если это x64, получает путь установки VLC из "SOFTWARE\VideoLAN\VLC" (тот, который я пропустил, потому что Я установил x86-версию VLC), но если процесс x86, он ищет VLC в "ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ\Microsoft\Windows\CurrentVersion\Uninstall".

Надеюсь, вам поможет...

person Ali Mousavi Kherad    schedule 01.10.2014