Использование OpenH264 DLL в C # Project - PullRequest
1 голос
/ 21 мая 2019

Я получаю поток H264 через UDP. Я хотел бы декодировать поток, чтобы я мог отправлять кадры в OpenCV или что-то еще. Я столкнулся с открытым исходным кодом декодера Cisco H264 здесь: https://github.com/cisco/openh264 С небольшими усилиями я получил решение для декодирования для сборки в Visual Studio 2019 и протестировал его из командной строки с помощью файла, который я создал из необработанных дейтаграмм UDP. Это работает.

Теперь я хочу выяснить, как использовать DLL декодера (welsdec.dll) в проекте C #. В последний раз, когда я делал что-то серьезное с C ++ в Windows, я вернулся на DirectShow и Delphi на 5 дней, поэтому я полностью потерян.

Ничто в проекте H264 явно не экспортируется с помощью __declspec (dllexport). Это нормально? Добавление библиотеки DLL в качестве ссылки на проект в проект C # не работает («ссылка недействительна или не поддерживается»).

Я предполагаю, что DLL неуправляемая. Могу ли я потреблять это непосредственно в C #? Я собираюсь переписать DLL, или, может быть, или обернуть ее, в C ++ CX библиотеку, чтобы это работало?

1 Ответ

3 голосов
/ 21 мая 2019

Вы можете использовать неуправляемую DLL в C # явно, используя PInvoke .

Вы также можете написать промежуточную DLL в C ++ / CLI , чтобы облегчить вызовы междууправляемое приложение C # и родная DLL.Это подход, принятый secile / OpenH264Lib.NET за комментарий * stuartd .

Похоже, что проект H264 использует файлы определения модуля (.def) вместо украшения экспорта с declspec.Вы по-прежнему должны иметь доступ к этим публично экспортируемым функциям, используя указанные выше методы.

...