我已经
          #include "Windows.h"
          #include "Winbase.h"
了,
甚至连
          #pragma comment(lib, "kernel32.lib") 
也用上了。但是还是出现错误:error C2065: 'SetFilePointerEx' : undeclared identifier环境:windows xp sp3 , vc6.0如何解决? 

解决方案 »

  1.   

    Requirements 
      Windows NT/2000/XP: Included in Windows 2000 and later.
      Windows 95/98/Me: Unsupported.
      Header: Declared in Winbase.h; include Windows.h.
      Library: Use Kernel32.lib.
      

  2.   

    把相应的lib找到,如果需要dll的话也加上。 
    在查找到SetFilePointerEx的声明,然后自己声明一次。 
    把lib加入链接嚣的选项中
      

  3.   

    #include "ParseNTFS.h"
    #include "Windows.h"
    #pragma comment(lib, "kernel32.lib") 
    typedef BOOL (__stdcall *SetFilePointerEx)(
      HANDLE hFile,
      LARGE_INTEGER liDistanceToMove,
      PLARGE_INTEGER lpNewFilePointer,
      DWORD dwMoveMethod);
    问题是如果我将以上全部都做了的话,就会报错误:
    error C2564: 'int (__stdcall *)(void *,union _LARGE_INTEGER,union _LARGE_INTEGER *,unsigned long)' : function-style conversion to builtin type takes only one argument我感觉好像是最后一个函数声明有问题
      

  4.   

    已经解决。
    typedef BOOL (__stdcall *pSetFilePointerEx)(
      HANDLE hFile,
      LARGE_INTEGER liDistanceToMove,
      PLARGE_INTEGER lpNewFilePointer,
      DWORD dwMoveMethod);
    函数声明    HINSTANCE h=::LoadLibrary("Kernel32.dll");
        if(!h)return;    pSetFilePointerEx SetFilePointerEx=(pSetFilePointerEx)::GetProcAddress(h,"SetFilePointerEx");
        if(!SetFilePointerEx){::FreeLibrary(h);return;}
    获取DLL的函数地址直接使用