C# WPF - VLC - LibVLCSharp.Shared.VLCException: '无法加载所需的本机库
C# WPF - VLC - LibVLCSharp.Shared.VLCException: 'Failed to load required native libraries
我已经在 code.videolan 网站上测试了 WPF 最小 VLC 示例,它工作正常。
然后我按照 Microsoft 文档 here 为 Windows 商店准备(并打包)应用程序,基本上它不再适用于加载库失败消息。
将 .package 项目设置为启动项目会产生问题。这些是我拥有的包,尽管 UWP 刚刚添加并且没有在任何地方被引用。
在 VLC 示例中,它直接在 Core.Initialize();
上失败
void VideoView_Loaded(object sender, RoutedEventArgs e)
{
Core.Initialize();
_libVLC = new LibVLC();
_mediaPlayer = new MediaPlayer(_libVLC);
VideoView.Media
_mediaPlayer.Play(new Media(_libVLC, new Uri("http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4")));
}
如果我输入:
var url = typeof(LibVLC).Assembly.Location;
在 Core.ini 行之前检查它的查找位置,我得到:
"C:\Users\franc\Documents\Visual Studio 2019\Projects\VLCTest\VLC.Package\bin\x64\Debug\AppX\VLCTest\LibVLCSharp.dll"
我觉得哪个不错..有什么建议吗?
编辑 1
未在 AppX 文件夹下创建 libvlc 文件夹:
{“无法加载所需的本机库。\r\nHave 您从 nuget 为您的目标平台安装了最新的 LibVLC 包?\r\nSearch 路径包括
...Projects\VLCTest\VLC.Package\bin\x64\Debug\AppX\VLCTest\libvlc\win-x64\libvlc.dll,
...Projects\VLCTest\VLC.Package\bin\x64\Debug\AppX\VLCTest\libvlc\win-x64\libvlccore.dll;
...Projects\VLCTest\VLC.Package\bin\x64\Debug\AppX\VLCTest\libvlc\win-x64\libvlc.dll,
...Projects\VLCTest\VLC.Package\bin\x64\Debug\AppX\VLCTest\libvlc\win-x64\libvlccore.dll;
...Projects\VLCTest\VLC.Package\bin\x64\Debug\AppX\VLCTest\libvlc.dll,"}
所以我手动将文件夹从 WPF 项目(不再是启动项目)复制到新的 .package 启动项目 AppX ... 文件夹并且它起作用了。
什么是干净的解决方案?
据我所知,使用 MSIX 打包从未经过测试。
您的 libvlc.dll、libvlccore.dll 文件和插件文件夹是否已正确复制到应用的 DLL 旁边?
如果您不使用 UWP,请不要引用 LVS.UWP。
我已经在 code.videolan 网站上测试了 WPF 最小 VLC 示例,它工作正常。
然后我按照 Microsoft 文档 here 为 Windows 商店准备(并打包)应用程序,基本上它不再适用于加载库失败消息。
将 .package 项目设置为启动项目会产生问题。这些是我拥有的包,尽管 UWP 刚刚添加并且没有在任何地方被引用。
在 VLC 示例中,它直接在 Core.Initialize();
上失败void VideoView_Loaded(object sender, RoutedEventArgs e)
{
Core.Initialize();
_libVLC = new LibVLC();
_mediaPlayer = new MediaPlayer(_libVLC);
VideoView.Media
_mediaPlayer.Play(new Media(_libVLC, new Uri("http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4")));
}
如果我输入:
var url = typeof(LibVLC).Assembly.Location;
在 Core.ini 行之前检查它的查找位置,我得到: "C:\Users\franc\Documents\Visual Studio 2019\Projects\VLCTest\VLC.Package\bin\x64\Debug\AppX\VLCTest\LibVLCSharp.dll"
我觉得哪个不错..有什么建议吗?
编辑 1
未在 AppX 文件夹下创建 libvlc 文件夹:
{“无法加载所需的本机库。\r\nHave 您从 nuget 为您的目标平台安装了最新的 LibVLC 包?\r\nSearch 路径包括
...Projects\VLCTest\VLC.Package\bin\x64\Debug\AppX\VLCTest\libvlc\win-x64\libvlc.dll, ...Projects\VLCTest\VLC.Package\bin\x64\Debug\AppX\VLCTest\libvlc\win-x64\libvlccore.dll; ...Projects\VLCTest\VLC.Package\bin\x64\Debug\AppX\VLCTest\libvlc\win-x64\libvlc.dll, ...Projects\VLCTest\VLC.Package\bin\x64\Debug\AppX\VLCTest\libvlc\win-x64\libvlccore.dll; ...Projects\VLCTest\VLC.Package\bin\x64\Debug\AppX\VLCTest\libvlc.dll,"}
所以我手动将文件夹从 WPF 项目(不再是启动项目)复制到新的 .package 启动项目 AppX ... 文件夹并且它起作用了。
什么是干净的解决方案?
据我所知,使用 MSIX 打包从未经过测试。
您的 libvlc.dll、libvlccore.dll 文件和插件文件夹是否已正确复制到应用的 DLL 旁边?
如果您不使用 UWP,请不要引用 LVS.UWP。