我们有一个Foobar.lib由客户提供的外部库 ( ),它链接到Qt5Core.dll。我们必须在我们自己的代码中使用该库。
在我们的环境中,我们使用 conda 和 conda-forge 提供的 Qt 库,并且 conda-forge 维护者决定将后缀附加
_conda到所有.lib和.dll文件(不知道为什么),所以我们最终在Qt5Core_conda.dll我们的PATH.
这是一个问题,因为我们的运行时要么找不到,要么同时Qt5Core.dll加载,这不起作用,因为一个库中的全局变量不会被另一个库(特别是全局变量)看到。Qt5Core.dllQt5Core_conda.dllQApplication
我们遇到的一件事是打开Foobar.lib并手动更改引用从Qt5Core.dllto Qt5Core_conda.dll,但是考虑到名称较大,我们需要向文件添加新字节,这会弄乱其中的地址(我们怀疑如果我们想要减少名称是可能的)。
我们正在寻找一种方法来更新/重写Foobar.lib以指向Qt5Core_conda.dll而不是Qt5Core.dll,有什么建议吗?
我们的环境是Windows。
虽然修补原始库是可能的(但前提是要极其谨慎并使用正确的工具),但我不建议这样做。
对于一般情况,一个合乎逻辑且简单的解决方案是简单地使用所需名称复制库,但由于各种原因,这对于 Qt 可能无法正常工作。
一个可行的解决方案是创建一个硬链接,它是一个动态且透明的引用,使其看起来像是实际的文件,而不是常见的 Windowslnk界面。创建硬链接后,对链接的访问与访问原始文件完全相同:唯一的区别是路径和文件名,但它们都引用文件系统中的相同数据对象。
您需要在命令提示符中使用该mklink命令/h,并带有标志(用于硬链接)和目标路径,后跟源路径:
mklink /h "path/to/Qt5Core.dll" "path/to/Qt5Core_conda.dll"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
377 次 |
| 最近记录: |