无法在WPF C#应用程序中加载DLL

时间:2015-01-12 13:15:43

标签: c# wpf dll dllimport

在调试模式下运行时,我收到以下错误消息(VS2010)我的C#WPF应用程序:

"无法加载DLL' VCECLB.dll':找不到指定的模块。 (HRESULT的例外情况:0x8007007E)"

发生此错误的代码是(请参阅hDevEnum):

namespace Imperx.FLExGrabber
{
public class Enumerator:IEnumerator
 {
    private IntPtr hDevEnum;

    VCECLB_EnumData enumData;
    /// Default constructor

    public Enumerator()
    {
        enumData.cbSize = (UInt32)Marshal.SizeOf(enumData);

        // Open enumerator handle
        hDevEnum = NativeFunctions.VCECLB_EnumInit();  <<--- Error message here!!!
    }

    /// Destructor
    ~Enumerator()
    {
        NativeFunctions.VCECLB_EnumClose(hDevEnum);
    }

 }
}

从使用Windows窗体应用程序的现有项目中,它运行完美。现在我需要将此解决方案转移到WPF应用程序中。因此我使用相同的机器(Win7 / 64ibt)与相同的VS2010。平台目标是X64。

问题:我需要将VCECLB.dll文件添加到项目中?我无法在引用下添加它,因此我将其放入文件夹&#34; ... \ bin \ x64 \ Release&#34; - 但没有成功。

当我使用依赖walker检查VCECLB.dll时,我得到以下信息: enter image description here

问号是否意味着那些dll缺失?如果是这样,为什么我可以使用相同的VCECLB.dll运行Windows窗体项目?

有人知道如何解决这个问题吗? 提前致谢

2 个答案:

答案 0 :(得分:3)

导致此类错误的原因有两个:

  1. 您所指的DLL不在DLL搜索路径上,或
  2. 找到了您引用的DLL,但找不到它的依赖项。
  3. 通过将DLL放在与可执行文件相同的目录中来解决问题1。通过确保安装所有依赖项来解决问题2。通常,这涉及部署DLL所依赖的MSVC运行时。

答案 1 :(得分:1)

您可以将VCECLB.dll放在解决方案的任何位置(例如Drag and amp; Drop中的root用户)

然后,添加文件后,点击文件右侧,选择属性

在高级三:

  • 构建操作

  • 中选择内容
  • 始终复制 复制到输出目录

获得类似下面的内容:

enter image description here