我正在执行P/Invoke,并且正在使用以下方法

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

即使工作正常,如何保证Authz.dll始终加载到我的代码中。假设我的dll是一些XXX.dll,在使用该dllt之前,我应该如何检查该dll是否已加载,这样我就不会出现未找到方法异常的情况。

最佳答案

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

关于c# - DllImport,如何检查DLL是否已加载?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11827722/

10-11 06:45