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

Unable to load DLL in WPF C# application

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

"Unable to load DLL 'VCECLB.dll': The specified module could not be found. (Exception from 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-application。因此,我使用同一台机器 (Win7/64ibt) 和相同的 VS2010。平台目标是X64。

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

当我使用 dependency walker 检查 VCECLB.dll 时,我得到以下信息:

问号是否意味着那些 dll 丢失了?如果是这样,为什么我可以 运行 具有相同 VCECLB.dll 的 windows 表单项目?

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

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

  1. 您引用的 DLL 不在 DLL 搜索路径上,或者
  2. 找到了您所引用的DLL,但找不到其依赖项。

通过将 DLL 放在与可执行文件相同的目录中解决问题 1。通过确保安装所有依赖项来解决问题 2。通常这涉及部署 DLL 所依赖的 MSVC 运行时。

您可以将 VCECLB.dll 放在解决方案中的任何位置(例如通过拖放放在根目录中)

然后,添加文件后,右键单击文件,选择 属性

进阶三:

  • 构建操作中选择内容

  • 并且总是复制复制到输出目录

得到类似下面的东西: