我需要调用一个在一个应用程序中重复调用其他5个dll的dll

时间:2010-09-09 18:09:36

标签: c++ dll explicit

我目前在C ++应用程序中使用SQLitening(www.sqlitening.com),我正在调用SQLitening.dll。 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调用的所有内容都被正确解除引用?感谢。

-Matt Phelps

- 分辨率系统

2 个答案:

答案 0 :(得分:1)

我通过使用一个明确加载dll的COM exe解决了这个问题。

答案 1 :(得分:0)

在挂钩之前,只需解开挂钩或检查功能是否已挂钩。

相关问题