如何在c#项目中加载dll
错误:
无法加载DLL'Reader.dll':找不到指定的模块。 (来自HRESULT的异常:0x8007007E)
代码示例:
[DllImport("Reader.dll")]
public static extern byte OpenReader(ref IntPtr hCom, byte LinkType, string com_port);
图片:
如果问题确实“无法找到”,那么使用Sysinternals的ProcMon将显示系统在哪里寻找DLL。
但是,通常这些异常意味着“我找到了DLL,但我无法加载它”,这可能是因为DLL的依赖性缺失而不是DLL本身,或者因为DLL与应用程序尝试不兼容加载它。如果您的C#应用程序设置为“任何CPU”并且您使用的是64位计算机,则会在加载非托管32位DLL时出现此类错误。
解决问题的一种方法是创建一个加载DLL的简单C / C ++项目。 (如果您无权访问导入库,则使用LoadLibrary动态加载它。)然后使用Dependency Walker分析测试工具,它将报告缺少的DLL的名称。
虽然reader.dll无法加载GPSVC.dll和IESHIMS.DLL。我设法通过在application.exe上运行corflags命令使其工作,应用程序现在标记为32位:
corflags application.exe /32bit+
版本:vh.0.30319
CLR标题:2.5
PE:PE32
CorFlags:3
非正式:1
32位:1
签名:0
我在另一篇文章中找到了这个。也许它会对你的情况有所帮助
如果它是一个简单的C DLL,它只需要与.exe位于同一个文件夹中。