DllImport,如何检查DLL是否已加载?

时间:2012-08-06 11:53:11

标签: c# pinvoke

我正在进行P / Invoke,我正在使用以下方法

[DllImport("Authz.dll", SetLastError = true)]
    public static extern BOOL AuthzFreeContext(
        IntPtr phAuthzResourceManager);

即使它正常工作,如何保证Authz.dll始终加载到我的代码中。假设我的dll有些XXX.dll我应该如何在使用之前检查是否加载了dll,这样我就不会找到找不到方法的方法。

1 个答案:

答案 0 :(得分:14)

Marshal.PrelinkAll(Type)

Marshal.Prelink(MethodInfo)

请参阅:http://msdn.microsoft.com/en-us/library/system.runtime.interopservices.marshal.prelinkall(v=vs.100).aspx

<强>更新

遗憾的是,如果找不到DLL,MSDN文档就没有提到任何抛出的异常。我刚刚通过一个简单的应用验证了它确实是DllNotFoundException正在抛出。