c# - 无法在 C# 中加载 DLL

标签 c# dll dllimport

如何在c#项目中加载dll

错误:

Unable to load DLL 'Reader.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E)

代码示例:

[DllImport("Reader.dll")]
 public static extern byte OpenReader(ref IntPtr hCom, byte LinkType, string com_port);

图片: exception screenshot

最佳答案

如果问题真的是“无法找到”,那么使用 Sysinternals 的 ProcMon 会告诉你系统在哪里寻找 DLL。

但是,这些异常通常意味着“我找到了 DLL,但我无法加载它”,这可能是因为缺少 DLL 的依赖项而不是 DLL 本身,或者因为 DLL 与试图加载它的应用程序。如果您的 C# 应用程序设置为“任何 CPU”并且您使用的是 64 位计算机,您将在加载非托管 32 位 DLL 时遇到此类错误。

隔离问题的一种方法是创建一个加载 DLL 的简单 C/C++ 项目。 (如果您无权访问导入库,则使用 LoadLibrary 动态加载它。)然后使用 Dependency Walker 分析测试工具,它将报告丢失的 DLL 的名称。

关于c# - 无法在 C# 中加载 DLL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9320495/

相关文章:

c# - 根据另一个 NumericUpDown 控件更新 NumericUpDown 值

c# - 使用MvcSiteMapProvider 4实现Image Sitemap

windows - 为什么通过 FFI 接口(interface)从 Rust 调用 Ada DLL 时会卡在 adainit?

c++ - 可以从 C++ DLL 项目创建 DYLIB 吗?

C# DllImport 意外崩溃

c# - WPF:将变量从父 xaml 传递给用户控件

c# - 我们如何将相似的 setter/getter 合并在一起?

c++ - VC9 和 VC8 库兼容性

c# - 在 C# 中调用 Cygwin GCC DLL 在 malloc 上挂起

macos - MonoMac 平台与框架的互操作