C++ TrySubmitThreadpoolCallback未声明的标识符

C++ TrySubmitThreadpoolCallback未声明的标识符,c++,winapi,C++,Winapi,env Win10,VC6.0 问题 当我使用windows默认线程池提交工作线程时, 这是一个编译错误。我使用VC6.0,并且包含了Windows.h 但它找不到函数。请帮帮我 main.cpp #include "main.h" int KeyMap[128]; int main() { ScriptHeadTail* pSht = (ScriptHeadTail*)KeyMap[101]; if (pSht != NULL){ TrySubmitTh

env

Win10,VC6.0

问题

当我使用windows默认线程池提交工作线程时, 这是一个编译错误。我使用VC6.0,并且包含了
Windows.h
但它找不到函数。请帮帮我

main.cpp

#include "main.h"

int KeyMap[128];



int main()
{
    ScriptHeadTail* pSht = (ScriptHeadTail*)KeyMap[101];
    if (pSht != NULL){
        TrySubmitThreadpoolCallback(ProcessHook, (LPVOID)(pSht->head), NULL);
    }

    Sleep(1000);

    return 1;
}


VOID CALLBACK ProcessHook(PTP_CALLBACK_INSTANCE instance, PVOID lParam)
{
    ExecuteScript* pScript = (ExecuteScript*)lpParam;
    while (pScript != NULL){
        switch (pScript->type)
        {
            case KEYBOARD :
            {
                printf("send key : %d\n", pScript->value);
                break;
            }
            case LBUTTON :
            {
                printf("left button down : %d\n", pScript->value);
                break;
            }
            case RBUTTON :
            {
                break;
            }
            case IDLE :
            {
                Sleep(pScript->value);
                break;
            }
        }
        pScript = pScript->next;
    }
    return 1;
}
main.h

#include <Windows.h>
#include <stdio.h>


struct ExecuteScript
{
    int type;
    int value;
    ExecuteScript* next;
};

struct ScriptHeadTail
{
    ExecuteScript* head;
    ExecuteScript* tail;
};

BOOL Init(LPCSTR configFile);
BOOL LoadConfigFile(const char* configFile);
VOID CALLBACK ProcessHook(PTP_CALLBACK_INSTANCE instance, PVOID lParam);

const int ASCII_LEN = 128;
const int KEYBOARD = 1;
const int LBUTTON = 2;
const int RBUTTON = 3;
const int IDLE = 4;

该API是在Windows Vista中引入的。VC 6支持的最新Windows SDK适用于Windows server 2003,它比Vista旧


修复的最佳方法是升级Visual C++到一些更新版本。它需要threadpoolapiset.h(包括Windows 7、Windows Server 2008、Windows Server 2008 R2和Windows.h)。所以VC6.0不支持新的SDK。谢谢仍然使用VC 6的原因是什么?可能重复的

--------------------Configuration: ReadFileTest - Win32 Debug---------- ----------
Compiling...
main.cpp
c:\users\jasey\windows-program\readfiletest\main.h(20) : error C2065: 'PTP_CALLBACK_INSTANCE' : undeclared identifier
c:\users\jasey\windows-program\readfiletest\main.h(20) : error C2146: syntax error : missing ')' before identifier 'instance'
c:\users\jasey\windows-program\readfiletest\main.h(20) : warning C4229: anachronism used : modifiers on data are ignored
c:\users\jasey\windows-program\readfiletest\main.h(20) : error C2182: 'ProcessHook' : illegal use of type 'void'
c:\users\jasey\windows-program\readfiletest\main.h(20) : error C2059: syntax error : ')'
c:\users\jasey\windows-program\readfiletest\main.cpp(13) : error C2065: 'TrySubmitThreadpoolCallback' : undeclared identifier
c:\users\jasey\windows-program\readfiletest\main.cpp(60) : error C2146: syntax error : missing ')' before identifier 'instance'
c:\users\jasey\windows-program\readfiletest\main.cpp(60) : warning C4229: anachronism used : modifiers on data are ignored
c:\users\jasey\windows-program\readfiletest\main.cpp(60) : error C2182: 'ProcessHook' : illegal use of type 'void'
c:\users\jasey\windows-program\readfiletest\main.cpp(60) : error C2086: 'ProcessHook' : redefinition
c:\users\jasey\windows-program\readfiletest\main.cpp(60) : error C2059: syntax error : ')'
c:\users\jasey\windows-program\readfiletest\main.cpp(61) : error C2143: syntax error : missing ';' before '{'
c:\users\jasey\windows-program\readfiletest\main.cpp(61) : error C2447: missing function header (old-style formal list?)
执行 cl.exe 时出错.
Creating browse info file...

ReadFileTest.exe - 1 error(s), 0 warning(s)