【发布时间】:2008-11-16 16:43:17
【问题描述】:
我使用 [Dllimport("DllName.dll")] 我确定我的 dll 的路径存在于进程 PATH 环境变量中,并且仍然 我得到“找不到 DllName.dll”
【问题讨论】:
-
请检查目标平台(X86 or x64 or AnyCPU)
标签: dll path pinvoke dllimport
我使用 [Dllimport("DllName.dll")] 我确定我的 dll 的路径存在于进程 PATH 环境变量中,并且仍然 我得到“找不到 DllName.dll”
【问题讨论】:
标签: dll path pinvoke dllimport
“找不到 DllName.dll”也可能意味着 DllImport 没有找到 DllName.dll 依赖项之一。
获取 Dependecy Walker 以检查您缺少哪个依赖项。
【讨论】:
我建议您使用 FileMon (sysinternals.com) 来检查您对库位置的假设是否正确。
【讨论】:
DllImport 在加载 DLL 时不参考 PATH 环境变量。我相当肯定 DllImport 在按名称引用 DLL 时遵循在本机程序中加载本机 DLL 的标准规则。这是一篇详细介绍这些规则的文章
http://msdn.microsoft.com/en-us/library/ms682586.aspx
我发现加载 DLL 的最简单方法就是将它放在与我正在执行的程序相同的位置。
【讨论】:
我在 C# 应用程序中使用 const string lcms2Path = "C:\\lcms2.dll"; 的时间最长。但最终将 DLL 移至 BIN 文件夹,这完美运行 [DllImport("lcms2.dll")]。
【讨论】: