我的(C++,跨平台)应用程序大量使用Boost库(比如版本1.x),我还希望链接第三方(供应商)的SDK(无源),本身使用Boost(但版本1.y).
因此,我们都动态链接到我们自己的BoostDLL 版本,CRT是相同的.因此,在运行时我的应用程序将必须加载两个DLL Boost 1.x & 1.y.
有哪些潜在的问题和陷阱?
我无法更改供应商的SDK,但我可以更改我的应用程序.也许我应该试着静静地与我联系Boost 1.x?
PS:BoostDLL的名称包括它们的版本,因此没有名称冲突,两者都是可识别的.不是通常的DLL-hell.
如果您编写一个函数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 名称不同,我认为没有问题。
| 归档时间: |
|
| 查看次数: |
2648 次 |
| 最近记录: |