c++ - 是否可以使用不同的兼容共享库重新链接二进制文件或加载两个同名的库
问题描述
我将以 windows 为例,但我很想知道是否有解决 linux 中类似问题的解决方案。
我有一个app.exe
与两个库(shared.dll
和)链接的应用程序(称为second.dll
)。该库second.dll
恰好链接到第三个库(也称为shared.dll
),该库恰好与与 链接的库具有相同的名称app.exe
,但不是二进制兼容版本。实际上,它们是同一个软件库的两个不兼容版本。
所以依赖图是:
app.exe
/ \
shared.dll second.dll
(v1) \
shared.dll
(v2)
app.exe
首先加载shared.dll
,然后second.dll
再尝试加载名为shared.dll
. Windows 现在认为这个库已经加载,但是second.dll
找不到它所依赖的入口点并且会失败。
假设我无权访问任何源代码,我可以将其中一个shared.dll
s 重命名为shared_other.dll
并以某种方式“重新链接”second.dll
与shared_other.dll
. 有没有其他方法可以解决冲突?
PSapp.exe
是 MATLAB,second.dll
是 Python Interpreter 库,shared.dll
s 是 HDF5 库的不同版本——一个是 MATLAB 使用的,另一个是 Keras 预编译轮使用的。
解决方案
推荐阅读
- r - 为绘制广义指数分布的风险函数添加图例
- node.js - 条纹 Webhook:E_WEBHOOK_REQUEST_ERROR
- vba - 转到每行的末尾和括号内的粗体文本
- python - 当在Python中使用正则表达式之间有单词时,如何提取特定关键字之后的下一行?
- asp.net-mvc - ASP .NET Core - 发回一个填充模型
- javascript - 如何使用 jquery 从选择选项列表视图中将单个信息传递到特定输入字段
- qt - Qt Designer 上的禁用布局选项
- javascript - 向下滚动时如何垂直缩小导航栏?
- c# - 刚体组件.速度.y = 0 显然会导致错误(制作乒乓球)
- javascript - Whois 命令的问题