这是测试代码
#include "windows.h"
#include "iostream"
using namespace std;
__declspec(thread) int tls_int = 0;
void NTAPI tls_callback(PVOID, DWORD dwReason, PVOID)
{
tls_int = 1;
}
#pragma data_seg(".CRT$XLB")
PIMAGE_TLS_CALLBACK p_thread_callback = tls_callback;
#pragma data_seg()
int main()
{
cout<<"main thread tls value = "<<tls_int<<endl;
return 0;
}
使用多线程调试 DLL (/MDd) 构建运行结果:主线程 tls 值 = 1
使用多线程调试 (/MTd) 运行结果构建:主线程 tls 值 = 0
看起来无法捕获使用 MTd 时创建的主线程
为什么 ?