崩溃使用变量声明__declspec(线程)

Bep*_*ppe 3 dll multithreading

我有一个使用静态线程本地存储(__declspec(thread))的DLL(用C编写),我想从Visual Basic图形界面使用这个DLL.

不幸的是,当在Windows XP上运行该接口时,使用静态线程本地存储的DLL在尝试访问其线程变量时崩溃.

我怎么解决这个问题?

感谢和问候

GB

PS我想不修改DLL.

Dav*_*nan 5

这是静态TLS 的已知限制.虽然您没有显式调用LoadLibrary(),但VB运行时代表您这样做.

请注意,此限制已从Vista中解除.我所知道的最全面的参考文献是Ken Johnson的博客.

如果你可以在生成的.exe的导入表中包含DLL,你可能能够解决这个问题,这可能涉及一些PE黑客攻击,而且我很不确定它是一个可行的策略.否则你需要更改DLL.