これはテストコードです
#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の使用時に作成されたメインスレッドをキャプチャできないようです
なぜ ?