在动态链接库中使用线程本地存储 我有一个使用THeLead局部变量的跨平台C++项目,它将在DLL中提供。这段代码在linux gcc中运行良好,但在windows vc2019平台中,我似乎无法将\uuuu declspec(dllexport)和本地线程一起使用,否则它将生成
[编译器错误C2492] 这是从 代码是一个简单的全局int变量:在动态链接库中使用线程本地存储 我有一个使用THeLead局部变量的跨平台C++项目,它将在DLL中提供。这段代码在linux gcc中运行良好,但在windows vc2019平台中,我似乎无法将\uuuu declspec(dllexport)和本地线程一起使用,否则它将生成,dll,thread-local,Dll,Thread Local,[编译器错误C2492] 这是从 代码是一个简单的全局int变量: extern thread_local int threadid; 最后我得到两个wey: 首先,它有点复杂 其次,不要在头文件中声明thread_局部变量,并使用get函数访问它,如下所示: #ifdef OS_WIN DLL_EXPORT int getThreadId(); DLL_EXPORT threadLocalWrap& getThreadLocalWrap(); #else extern thread_
extern thread_local int threadid;
最后我得到两个wey:
首先,它有点复杂
其次,不要在头文件中声明thread_局部变量,并使用get函数访问它,如下所示:
#ifdef OS_WIN
DLL_EXPORT int getThreadId();
DLL_EXPORT threadLocalWrap& getThreadLocalWrap();
#else
extern thread_local int threadid;
extern thread_local threadLocalWrap _threadLocalWrap;
#define getThreadId() threadid
#define getThreadLocalWrap() _threadLocalWrap
#endif