Простое объявление сигнатуры функции из внешней DLL не дает исключения времени выполнения, если DLL или функция не существует, верно? - PullRequest
0 голосов
/ 02 декабря 2010

Например, если я заявляю:

internal static class WinAPI
{
    [DllImport("DwmApi.dll", PreserveSig = false)]
    internal static extern bool DwmIsCompositionEnabled();
}

, но я не вызываю функцию DwmIsCompositionEnabled в моем проекте, я надеюсь, что это не вызовет исключения при запускепрограмма в системах, где DwmApi.dll не существует (или функция не существует в этой DLL).(Реальный случай: DwmApi.dll требует Windows Vista, поэтому она не существует в Windows XP).

Ответы [ 2 ]

1 голос
/ 02 декабря 2010

Это будет проблемой, только если и когда вызывается API.

Вы могли бы рассмотреть тонкую оболочку C # на P / Invoke для облегчения обработки ошибки, если вы вызываете это из нескольких мест.

0 голосов
/ 02 декабря 2010

Пока вы не вызываете его или не используете NGEN для развертывания (то есть: если вы всегда полагаетесь на .NET Jit), у вас все хорошо.

...