【问题标题】:System.IO.FileNotFoundException when trying to load DLL尝试加载 DLL 时出现 System.IO.FileNotFoundException
【发布时间】:2012-03-30 08:41:37
【问题描述】:

我不是一个经验丰富的 Windows 开发人员,所以我希望这一切都有意义。

我使用 Visual Studio 2010 创建了一个托管程序集 DLL。该 DLL (Plip.dll) 包含一个 C++ 类,该类使用 System.IO.SerialPort 类通过串行端口进行一些简单的通信。

在第二个 Visual Studio 项目中,我创建了一个使用 Plip.dll 中的类的简单 GUI。在我的 GUI 项目中,我有一行:#using "Plip.dll"。在项目属性中,我将“Resolve #using References”值设置为 Plip.dll 的正确位置。 GUI 构建得很好。如果我将 GUI.exe 和 Plip.dll 复制到同一个文件夹,则 GUI 在我的计算机上运行良好。

我遇到的问题是,当我将这两个文件复制到第二台计算机时,我无法运行 GUI 可执行文件。我收到以下错误:“System.IO.FileNotFoundException。无法加载文件或程序集“Plip.dll”Vesion=....“。即使 exe 和 dll 位于同一文件夹中,我也会收到此错误。

关于如何解决此问题的任何建议?是否需要在我的 GUI 项目中设置一些选项才能在运行时正确加载 DLL?

【问题讨论】:

    标签: visual-studio-2010 dll


    【解决方案1】:

    我想问题不是 Plip.dll,而是依赖关系。

    在第二台计算机上使用Dependency Walker 以查看它是否需要任何其他 dll(它们可能安装在系统文件夹或开发计算机的 %PATH% 中,但另一台计算机上则没有)。

    如果这第二台计算机没有安装 Visual Studio,您可能缺少Microsoft Visual C++ 2010 Redistributable Package(您需要在另一台计算机上安装它)

    还要确保在 Release 中编译,因为调试版本需要调试依赖项。

    【讨论】:

    • 您完全正确。 Dependency Walker 显示我缺少 MS C++ 2010 Redistributable。感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-10
    • 1970-01-01
    相关资源
    最近更新 更多