在来自C++应用程序的成功调用之间保留dll中的状态

Preserve state in dll between succssesive calls from C++ application

本文关键字:之间 保留 dll 状态 调用 成功 C++ 应用程序      更新时间:2023-10-16

我在应用程序中显式使用DLL,是否可以在连续调用该DLL之间保留该DLL的状态?到目前为止,我使用global的尝试都失败了。

我必须使用隐式链接才能工作吗?

链接的类型在这里不应该有任何影响。它只是定义何时加载DLL,以及是否需要它来实际启动程序。例如,通过运行时加载,您可以加载编译时不存在的DLL(例如插件),并且您可以自己处理丢失的依赖项。使用编译时链接,你只会得到一个Windows错误,告诉你缺少一个DLL。

至于卸载,你不能直接控制你的DLL是否会留在内存中,所以它可能是在被两个不同的程序使用之间卸载的。此外,您实际认为的"连续呼叫"是什么?两个来自同一程序的电话?来自同一程序的两个调用发生在两个不同的执行过程中?两个程序同时运行?根据具体情况,您可能需要一些共享内存(或磁盘空间)来实际传递数据。

您可能会查看DllCanUnloadNow来告诉窗口您是否已经准备好卸载,但根据您的用例,这可能是错误的工具。