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

时间:2011-03-04 13:50:46

标签: multithreading dll

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

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

我该如何解决这个问题?

谢谢, 此致

G.B。

PS 我想不修改DLL。

1 个答案:

答案 0 :(得分:5)

这是静态TLS的known limitation。虽然您没有显式调用LoadLibrary(),但VB运行时代表您这样做。

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

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