Как устранить ложноположительную ошибку «Должны существовать точки входа P / Invoke»?

1

Прежде чем спросить, я видел ту же проблему и вопрос в этой статье С#, она сообщает, что вызывает ложный позитив в инструменте анализа кода, но не говорит, как решить проблему, и именно поэтому я прошу.

У меня есть эти объявления API:

    <DllImport("user32.dll", EntryPoint:="GetWindowLong", CharSet:=CharSet.Auto)>
    Friend Shared Function GetWindowLong32(
        ByVal hWnd As HandleRef,
        <MarshalAs(UnmanagedType.I4)> ByVal nIndex As WindowAttributes
    ) As Integer
    End Function

    <DllImport("user32.dll", EntryPoint:="GetWindowLongPtr", CharSet:=CharSet.Auto)>
    Friend Shared Function GetWindowLong64(
        ByVal hWnd As HandleRef,
       <MarshalAs(UnmanagedType.I4)> ByVal nIndex As WindowAttributes
    ) As Long
    End Function

Когда я GetWindowLongPtr инструмент анализа кода, он не может найти точку GetWindowLongPtr функции GetWindowLongPtr.

У меня VS2013 Ultimate, я компилирую для x64, и я прочитал эту статью из MSDN.

Существует официальный способ решить эту проблему без подавления сообщения об ошибке в инструменте анализа кода?

Теги:
visual-studio
winapi

1 ответ

1
Лучший ответ

Это устраняет CS-сообщение/флаг, но вам нужно будет проверить, работает ли он по-прежнему (я не могу придумать тестовый пример):

<DllImport("user32.dll", EntryPoint:="GetWindowLongA", CharSet:=CharSet.Ansi)>
Friend Shared Function GetWindowLong64(
    ByVal hWnd As HandleRef,
   <MarshalAs(UnmanagedType.I4)> ByVal nIndex As WindowLongFlags
) As Long
End Function

Ещё вопросы

Сообщество Overcoder
Наверх
Меню