同一个(Boost)DLL的多个版本可以在同一个进程中共存吗?

8 c++ dll boost version

我的(C++,跨平台)应用程序大量使用Boost库(比如版本1.x),我还希望链接第三方(供应商)的SDK(无源),本身使用Boost(但版本1.y).

因此,我们都动态链接到我们自己的BoostDLL 版本,CRT是相同的.因此,在运行时我的应用程序将必须加载两个DLL Boost 1.x & 1.y.

有哪些潜在的问题和陷阱?

我无法更改供应商的SDK,但我可以更改我的应用程序.也许我应该试着静静地与我联系Boost 1.x

PS:BoostDLL的名称包括它们的版本,因此没有名称冲突,两者都是可识别的.不是通常的DLL-hell.

xto*_*ofl 1

如果您编写一个函数foo,并将其从 F.dll 导出,并foo从 G.dll 导出另一个函数,您会遇到问题吗?

当链接 AF.exe 时,链接器被告知:在其中放置一些从 F.dll 加载函数地址的代码foo。现在 BG.dll 已链接以从 G.dll 检索foo地址。我仍然认为没有问题。

现在,将 AF.exe 替换为您的应用程序,将 BG.dll 替换为您供应商的应用程序,将 F.dll 替换为您的 boost 版本,将 G.dll 替换为供应商的 boost 版本。

结论:如果 dll 名称不同,我认为没有问题。