我需要手动设置线程的优先级,并使用GetProcessIdOfThread进行设置。不幸的是,第3方库要求我将代码构建为Use MFC in a Shared DLL,以便可以将afx.h用于dll欺骗。

如何在不使用GetProcessIdOfThread的情况下使用类似windows.h的功能?

我试图包括WinBase.h,但这会抛出很多废话,编译错误。

最佳答案

只要您的下游链接器设置正确,您就可以简单地将函数声明添加到您选择的项目头文件中。

这是WinBase.h中的原始声明:

WINBASEAPI DWORD WINAPI GetProcessIdOfThread(HANDLE Thread);

如果您不包括Windows.h,那么您将没有该特定声明所需的大多数已使用预处理器宏/定义。如果要针对CRT的静态库版本进行链接,则这是等效的定义:
unsigned long __stdcall GetProcessIdOfThread(void *Thread);

如果要针对CRT的DLL版本进行链接,则需要在声明的前面加上__declspec(dllimport):
__declspec(dllimport) unsigned long __stdcall GetProcessIdOfThread(void *Thread);

10-04 13:37