【发布时间】:2014-07-29 10:51:47
【问题描述】:
我需要接管别人的 C# 代码,但我以前从未使用过 C#,并且对 Visual Studio 的经验很少。该代码无法加载某些 DLL。它看起来像这样;
hModule = LoadLibrary("XXX.dll");
if (hModule == IntPtr.Zero)
{
MessageBox.Show("Load failed.", "Error");
return;
}
导致DLL加载失败的可能原因有哪些?如果是路径问题,我已将 DLL 放置在与可执行文件相同的位置。我是否需要为此 dll 手动添加一些引用(使用 Visual Studio 2012)?还是dll有问题?如果是,如何验证?
我知道这个问题不适合 Stack Overflow,因为它太开放了。但提出的一些可能性可以为我指明正确的方向。我想在 Stackoverflow 成员关闭这个问题或多次否决它之前要求一些回旋余地。谢谢。
编辑:在尝试了 Hans Passant 的答案后,我收到了错误 %1 is not a valid Win32 application。这是否意味着 DLL 有问题?同一个 DLL 可以与 Visual C++ 代码库一起使用,但不能与 C# 代码一起使用。我还注意到代码中有一些静态库 .lib。但是如果我没记错的话,C# 不接受静态库。
【问题讨论】:
-
包含错误消息,以便人们可以为您指明正确的方向。
-
您为什么使用 LoadLibrary 而不是标准做法 (pInvoke)?
-
代码加载一些DLL失败你的意思是你可以加载一些但不是全部?
-
你为什么不简单地尝试一下...抓住它,看看它为什么会失败?
-
“导致 DLL 加载失败的可能原因有哪些?” - 有时间我们迭代整个 MSDN 库吗?请包括实际错误。
标签: c# visual-studio dll