【问题标题】:I need to call a dll that is calling 5 other dlls repeatedly in one application我需要在一个应用程序中调用一个重复调用 5 个其他 dll 的 dll
【发布时间】:2010-09-09 18:09:36
【问题描述】:

我目前在调用 SQLitening.dll 的 C++ 应用程序中使用 SQLitening (www.sqlitening.com)。 SQLitening.dll 对 SQLiteningClient.dll、Zlib.dll 和 SQLite3.dll 进行后续调用。我明确地挂钩 SQLitening.dll,执行一些函数,然后关闭连接并使用 FreeLibrary 解除对 dll 的引用。

但是,后续的 dll(SQLiteningClient.dll 等)仍然与调用进程挂钩。每当我再次尝试挂接 SQLitening.dll 时,它都挂得很好,但是某些函数行为异常,例如查询远程数据库的函数。我不禁认为这是因为这些 dll 没有被正确释放。每当我隐式挂钩 dll(全局挂钩每个函数)时,只要我一直将它保存在内存中,一切都会正常工作。但是,我需要明确地这样做。

注意:SQLitening 的 Fred Meier 说显式链接在 PowerBasic 应用程序中运行良好。我还应该注意到 SQLitening 是用 PowerBasic 编写的。

有没有办法为 SQLitening.dll 生成一个单独的进程或线程来挂钩所有内容,这样当我取消引用 SQLitening 时,我就可以终止该进程?或者是否有一种特殊的方法来确保 SQLitening 调用的所有内容都被正确取消引用?谢谢。

-马特菲尔普斯

-分辨率系统

【问题讨论】:

    标签: c++ dll explicit


    【解决方案1】:

    我通过使用显式加载 dll 的 COM exe 解决了这个问题。

    【讨论】:

      【解决方案2】:

      只需解开你的钩子或在钩子之前检查函数是否已经钩子。

      【讨论】:

      • 听起来可能来自“Suse 博士的编程”
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多