我有一个不是线程安全的DLL,必须由多个线程使用。我不确定Windows如何检测加载的DLL-s,无论是完整文件路径还是DLL /模块名称。如果使用文件路径,我认为可以将DLL复制到每个线程的单独文件中,例如MyLib1.dll
,MyLib2.dll
,MyLib3.dll
并加载LoadLibrary
。
答案 0 :(得分:2)
只要在调用LoadLibrary
时使用完整的绝对文件名,并且只要这些绝对文件名不同,就可以加载多个实例。
就个人而言,如果是我,我会创建线程,然后将DLL复制到命名为<threadID>.dll
的临时文件夹中。这将保证名称的独特性。