VisualStudio2012のコード分析ツールからこの警告が表示されます。コードは次のようになります。
using System;
using System.Runtime.InteropServices;
namespace MyProgramNamespace
{
class NativeMethods
{
[DllImport("user32.dll", EntryPoint = "GetWindowLongPtr")]
public static extern IntPtr GetWindowLongPtr(IntPtr handle, int flag);
[DllImport("user32.dll", EntryPoint = "SetWindowLongPtr")]
public static extern IntPtr SetWindowLongPtr(IntPtr handle, int flag, IntPtr ownerHandle);
}
}
私はx64のみをコンパイルしているので、古いGetWindowLongとSetWindowLongの使用には関心がありません。これらのエントリポイント名は、私が知る限り正しいものです。
編集:解決済み。問題は、Visual Studio自体(したがってコード分析ツール)が32ビットであるということです。コード分析ツールがuser32.dllをチェックして、それらの関数が存在するかどうかを確認すると、プログラムが実際に使用するバージョン(64ビットバージョン)ではなく、32ビットバージョンのuser32.dll(C:/ Windows / SysWOW64 /内)をチェックします。 C:/ Windows / System32)で、これらの関数は64ビットバージョンにのみ存在します(32ビットバージョンはGetWindowLongPtr/SetWindowLongPtrの代わりにGetWindowLong/SetWindowLongを使用します(PTR部分に注意してください))。