При использовании вызовов платформ в .NET вы можете использовать Marshal.PrelinkAll(Type)
метод
Задачи установки обеспечивают раннюю инициализацию и выполняются
автоматически, когда вызывается целевой метод. Новые задания
включают следующее:
Проверка правильности форматирования метаданных вызова платформы.
Проверка того, что все управляемые типы являются допустимыми параметрами платформы
вызывать функции.
Нахождение и загрузка неуправляемой DLL в процесс.
Определение точки входа в процесс.
Как вы можете видеть, он выполняет дополнительные проверки, отличные от того, существует ли dll, например, находит точки входа (например, если SomeMethod()
и SomeMethod2()
действительно существуют в процессе, как в следующем коде).
using System.Runtime.InteropServices;
public class MY_PINVOKES
{
[DllImport("some.dll")]
private static void SomeMethod();
[DllImport("some.dll")]
private static void SomeMethod2();
}
Затем используйте стратегию try...catch
для проверки:
try
{
// MY_PINVOKES class where P/Invokes are
Marshal.PrelinkAll( typeof( MY_PINVOKES) );
}
catch
{
// Handle error, DLL or Method may not exist
}