windows - 将依赖于 dll 的运行时加载插件部署 - 将该 dll 放在哪里?
问题描述
我们正在构建一个音频插件,可以由各种音频制作软件加载。为了使其尽可能兼容所有常见软件,我们实际上构建了它的三个版本(Steinberg VST2 格式、Steinberg VST3 格式、Avid AAX 格式),这是通过使用这三个 API 的包装器包装我们的核心插件代码来实现的。所有三个版本都安装在为每种格式指定的标准位置。
我们的插件现在依赖于我们想要动态链接的 Microsoft onnxruntime。现在,部署和处理这种依赖关系的正确方法是什么?由于插件是由用户在运行时选择的主机软件加载的,因此无法将 dll 依赖项放在可执行文件旁边,因为我们不知道用户将使用哪个主机软件以及该软件将使用三种插件格式中的哪一种选择。
作为一名 macOS 开发人员,我不熟悉这里的 Windows 最佳实践。
理想情况下,我们希望将 dll 安装到自定义位置。但这需要我们修改系统 PATH 变量,以确保在主机加载我们的插件之一时为所有用户找到 dll,对吗?我不确定这是否是一个干净的解决方案?
另一种选择可能是将 dll 安装到 C:\Windows\System32 但我的研究表明那里没有关于 dll 的版本控制信息,所以万一其他应用程序也安装在 nxruntime 那里(或者如果它从来没有安装过 Windows onnxruntime 已经附带),我们如何确保它的版本等于或大于我们的插件所需的版本(在这种情况下我们不会覆盖它)或低于我们需要的最低版本(在其中将替换它)?这对我来说通常也是不好的做法。
那么对于这种情况,Windows 上常见的最佳实践是什么?我是否忽略了正确的解决方案?
解决方案
推荐阅读
- python - Python 运算符和 If 条件
- github - 为什么 Travis CI 的 xenial VM 发现 gcc 5 和 7,而不是 6?
- c++ - 使用框架绘制精灵时的C++ Sfml白色方块
- dart - 我发布了我的 Dart Web 应用程序,但在部署后没有找到 bootstrap all.css
- java - 使用 Apache POI 获取 excel 单元格显示值
- sql - 在字段中查找匹配值,由空格分隔
- swift - 如何使collectionViewLayout动态改变单元格的高度和宽度?
- vb.net - 使用数组时如何在 vb.net 中修复“ReadOnly”
- reactjs - 存储令牌后 LocalStorage 不起作用
- java - 如何将 json 打印到 listview 包含两个数据?