无法加载或组装或其依赖项之一

时间:2014-08-27 15:22:28

标签: c# ffmpeg filenotfoundexception aforge

我正在使用Aforge.net框架来完成图像处理工作。 我已经添加了' AForge.Video.FFMPEG.dll'作为对我项目的尊重。 我正在使用VS2012和32位构建目标。 当Buiding我得到

 System.IO.FileNotFoundException was unhandled
  HResult=-2147024770
  Message=Could not load file or assembly 'AForge.Video.FFMPEG.dll' or one of its dependencies. The specified module could not be found.
  Source=VideoReadere
  FileName=AForge.Video.FFMPEG.dll
  FusionLog=""
  StackTrace:
       at VideoReadere.Form1..ctor()
       at VideoReadere.Program.Main() in c:\Users\Prabad\Documents\Visual Studio 2012\Projects\VideoReadere\VideoReadere\Program.cs:line 19
       at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
       at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
       at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
       at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
       at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       at System.Threading.ThreadHelper.ThreadStart()
  InnerException: 

我的代码是发生异常

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace VideoReadere
{
    static class Program
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
//here below line give exception
            Application.Run(new Form1());
        }
    }
}

8 个答案:

答案 0 :(得分:11)

您需要将DLL从“Externals \ ffmpeg \ bin”复制到AForge.Video.FFMPEG.dll位置,并且可能需要安装Microsoft Visual C ++ Redistributable。

答案 1 :(得分:3)

我知道它有点晚了,但我希望我的回答有助于某人。 我有这个问题,这让我有点困难。 这是它对我有用的方式:

  1. 项目 - &gt;添加现有项目(从其他答案中提到的“Externals \ ffmpeg \ bin”浏览到DLL)
  2. 确保您显示文件类型下拉列表中的所有类型
  3. 选择所有DLL,然后从添加按钮中选择添加链接选项
  4. 应该在项目解决方案上显示DLL,选择所有这些
  5. 编辑Build Action属性并将其设为NativeBinary
  6. 编辑复制到输出目录并使其始终复制
  7. 就是这样。这对我有用,我发布了我的应用程序,它在Windows平板电脑上工作。 干杯

答案 2 :(得分:2)

试试这个

检查项目目标是否为x86,因为程序集在64中不起作用。然后检查FFMPEG dll是否在应用程序的同一目录中。

答案 3 :(得分:0)

试试这个工具:Dependency Walker 它节省了我的时间几次。

编辑: 对不起,我看到上次评论太晚了。

答案 4 :(得分:0)

我通过在发布模式下重建项目解决了这个问题(我使用Visual Studio 2013)

答案 5 :(得分:0)

我尝试了所有推荐的解决方案,但没有一个适用于我,当我使用dependencywalker时,我注意到该库缺少文件(版本2.2.5)。所以我下载了以前的2.2.4版本,它对我来说很好。

答案 6 :(得分:0)

为了修复此错误,我将目标CPU更改为X86以匹配引用的Chilkat-dll组件的体系结构。对于其他dll,必须选择与dll组件的体系结构匹配的项目的正确目标CPU。错误将得到解决。右键单击项目名称&gt;属性&gt;编译&gt;目标CPU - &gt;你会来到Target CPU。

答案 7 :(得分:0)

这对我有用:

  1. useLegacyV2RuntimeActivationPolicy="true"添加到App.Config
  2. 关联两个dll - AForge.Video.dllAForge.Video.FFMPEG.dll
  3. 复制到输出文件夹\AForge.NET Framework-2.2.5\Externals\ffmpeg\bin *.dlls