依赖于其他 DLL 的插件 DLL

2023-11-27

我正在编写一个 DLL 来插入另一个(第 3 方)应用程序。该 DLL 将需要依赖于另一组 DLL(出于许可原因,我无法静态链接)。

我希望我的 DLL 可以“xcopy-deployable”到任何目录。我也不想要求将此目录添加到路径中。

如果我只是按照通常的方式构建 DLL,Windows 将拒绝加载 DLL,因为它无法找到当前进程旁边的 DLL。

有没有什么好的选择可以帮助 Windows 找到 DLL?


回答一些问题:

  • 该DLL是用C++编写的。
  • 额外的 DLL 是 QT-dll。
  • 我想将额外的 DLL 放在与我的插件 DLL 相同的文件夹中。我可以从中获取该文件夹的名称GetModuleFileName.
  • 该应用程序是 Firefox,DLL 是 PKCS#11 安全模块。
  • 应用程序使用 DLL 的完整路径加载 DLL(用户在安装插件时提供)。
  • 要求将 DLL 放置在 System32 中或应用程序旁边是可行的,但它有点混乱,并且可能会导致卸载程序出现问题。
  • LoadLibrary and GetProcAddress当然可以,但对我来说不太可行。我在其他 DLL 中使用了数百个(如果不是数千个)方法。我真的需要使用导入库。

我曾考虑过使用延迟加载的 dll 与SetDllDirectory在 DllMain 中。有人尝试过这样的事情吗?


我能想到3种方法。

  1. 将 dll 放在与您的应用程序相同的文件夹中(您不能这样做?)
  2. 使用运行时链接。LoadLibrary() and GetProcAddress()
  3. 使用清单http://msdn.microsoft.com/en-us/library/aa374182(VS.85).aspx

但是,如果 dll 与 .exe 不在同一文件夹中,您如何知道它在哪里?忘记Windows不知道,怎么办you know?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

依赖于其他 DLL 的插件 DLL 的相关文章

随机推荐

  • SQL 查询获取结果集最后一行中所有列值的总和以及行总和(分组依据)

    有人可以帮我编写一个查询来获取 TCS 和 TRS 吗 ID Jan Feb Mar TRS 1 4 5 6 15 2 5 5 5 15 3 1 1 1 3 TCS 10 11 12 TCS 总列总和 和TRS 总行总和 分别是新的列和行
  • setTimeout 是使用 javascript 执行异步函数的好解决方案吗?

    在网上搜索有关异步函数的信息 我发现很多文章使用 setTimeout 来完成这项工作 window setTimeout function console log second 0 console log first Output fir
  • 绘制金字塔图

    我需要画一个金字塔图 如所附的 我找到了一个使用 R 但不是 ggplot 的示例here 任何人都可以给我一些使用 ggplot 执行此操作的提示吗 谢谢 我用了一些解决方法 而不是使用 geom bar 而是使用了 geom liner
  • Pandas read_csv 指定 AWS 配置文件

    熊猫 v1 0 5 使用s3fs用于连接 AWS S3 并读取数据的库 默认情况下 s3fs 使用在以下位置找到的凭据 aws credentials文件输入default轮廓 如何指定 pandas 在从 S3 读取 CSV 时应使用哪个
  • SQLAlchemy 重复键更新

    有没有一种优雅的方式来做INSERT ON DUPLICATE KEY UPDATE在 SQLAlchemy 中 我的意思是语法类似于inserter insert execute list of dictionaries ON DUPLI
  • 是否可以创建一个特征来回答类型是否来自 std?

    After 这个问题通过利用 ADL 我们可以创建一个特征来回答传递的类型是否来自我们的命名空间 include
  • Doxygen 分组

    我对 doxygen 中的页面和组有疑问 我有一个项目 我在其中使用 defgroup 和 ingroup cmd 对类等进行分组 到目前为止这工作正常 现在我想使用 Markdown 页面向项目添加特殊文档 这些页面应出现在专用模块 组
  • 在 Cocoa 中生成随机字母数字字符串

    我想调用一个方法 向其传递长度并让它生成一个随机字母数字字符串 是否有任何实用程序库可能具有大量此类功能 这是一个快速而肮脏的实现 没有经过测试 NSString letters abcdefghijklmnopqrstuvwxyzABCD
  • Maven、javadoc:包没有源文件

    我正在写一个专家package具有目录结构 frtex pom xml frtex src main java some files java frtex src main java utils some other files java
  • 对象转储器类

    我正在寻找一个可以以类似于以下格式输出对象及其所有叶值的类 User Name Gordon Age 60 WorkAddress Street 10 Downing Street Town London Country UK HomeAd
  • C# 阻止 Adob​​e Reader 窗口在尝试打印文档时出现

    由于我现在无法进入的原因 我需要在尝试打印文档时阻止 Adob e Reader 窗口打开 在我之前从事此工作的开发人员设置了以下标志 尽管我不太确定它们的用途 if RegistryManager GetAcrobatVersion gt
  • Angular 2从API下载PDF并在视图中显示

    我正在学习 Angular 2 Beta 我想知道如何从 API 下载 PDF 文件并将其显示在我的视图中 我尝试使用以下方式发出请求 var headers new Headers headers append Accept applic
  • 我无法在 Nuxt 3 中使用动态组件

    我尝试让它发挥作用
  • Gradle 构建错误:原因:org.gradle.api.internal.ExtensibleDynamicObject

    我正在尝试导入 https code google com p android serialport api 进入 Android Studio 由于这个项目涉及到ndk 所以我按照以下链接的说明构建NDK http tools andro
  • C# 中 VB 的 Asc() 和 Chr() 函数相当于什么?

    VB 有几个用于将 char 转换为 ASCII 值 反之亦然 的本机函数 Asc 和 Chr 现在我需要在 C 中获得等效的功能 最好的办法是什么 您始终可以添加对 Microsoft VisualBasic 的引用 然后使用完全相同的方
  • 通过 Hadoop 输入格式用于 pyspark 的 BigQuery 连接器示例

    我有一个大型数据集存储在 BigQuery 表中 我想将其加载到 pypark RDD 中以进行 ETL 数据处理 我意识到 BigQuery 支持 Hadoop 输入 输出格式 https cloud google com hadoop
  • TLS 连接未正确终止

    我正在使用 BitBucket 我的服务器上安装了一个存储库 git clone https bitbucket org myproject git 我能够从我的服务器拉取和推送到 bitbucket org 存储库 现在 在过去的几天里
  • 在“本地”或“监视”窗口中查看对象会导致 Excel 崩溃

    在 Excel 中 当我运行一些代码并放置断点时 我可以查看局部窗口中的值 在本地窗口中 当我尝试为我创建的类展开对象时 Excel 崩溃并显示 Microsoft Office Excel 遇到问题 需要关闭 对于给您带来的不便 我们深表
  • 如何编辑/重置警报管理器?

    我设置了一个首选项屏幕 其中有一个列表首选项 允许用户选择通知他们的时间间隔 他们可以选择是否每 2 4 8 10 或 12 小时后通知他们 这是我的列表偏好
  • 依赖于其他 DLL 的插件 DLL

    我正在编写一个 DLL 来插入另一个 第 3 方 应用程序 该 DLL 将需要依赖于另一组 DLL 出于许可原因 我无法静态链接 我希望我的 DLL 可以 xcopy deployable 到任何目录 我也不想要求将此目录添加到路径中 如果