我正在通过UDP接收H264流。我想解码流,以便可以将帧发送到OpenCV或其他任何设备。我在这里遇到了Cisco的开源H264解码器:https://github.com/cisco/openh264 只需一点努力,我就可以在Visual Studio 2019中构建解码器解决方案,并使用从原始UDP数据报创建的文件从命令行对其进行测试。可以。
现在,我想弄清楚如何在C#项目中使用解码器DLL(welsdec.dll)。上一次我在Windows中使用C ++做任何认真的事情都回到了DirectShow和Delphi 5天,所以我完全迷路了。
H264项目中的任何内容都不会通过__declspec(dllexport)显式导出。那是正常的吗?将DLL作为项目引用添加到C#项目不起作用(“引用无效或不受支持”)。
我猜该DLL是不受管的。我可以直接在C#中使用它吗?我是否需要将DLL重写为C ++ CX库,或者将其包装为C ++ CX库?
答案 0 :(得分:3)
您可以使用PInvoke在C#中显式使用非托管DLL。
您还可以编写intermediary DLL in C++/CLI来简化托管C#应用程序和本机DLL之间的调用。这是secile/OpenH264Lib.NET每stuartd's条评论所采用的方法。
看起来H264项目使用module definition files (.def)代替了用declspec
装饰出口。您仍然可以使用上述方法访问这些公开导出的功能。