0

我有一个现有的 C++ DLL,它是通过调用应用程序的 LoadLibray 调用的。它被交给了一个窗口,并预计在该窗口中运行。在单窗口环境中(即为下一个用户和/或窗口卸载 DLL),一切都很好。但是,我发现当我们获得多个窗口时,就会发生麻烦。

我相信问题是由于我们草率并且有相当多的全局数据(即extern,或declare类之外的s),当然,当窗口切换时,并非所有数据都正确更新并且它被“混淆”了。

一种解决方案可能是包装所有全局数据并将其分配给“窗口”,然后当激活特定窗口时,指针将指向该数据块。但是,我认为这是一项巨大的编码工作。

我想知道的另一个解决方案(最后是问题:-) 是我们是否可以包装 DLL 并使其成为一个 .NET 对象,该对象将为每个需要的窗口实例化。

问题是这是否可以以这样一种方式完成,以便每个实例完全独立于另一个实例,从而消除我们在使用全局变量时遇到的麻烦?

4

0 回答 0