用于覆盖DLL的计数器参数

问题描述 投票:0回答:1

我们要热重新加载DLL。第一个想法是覆盖.dll文件,然后从应用程序重新加载它。但是,该文件受写保护。

是否有(已记录的)抗辩理由不删除此文件保护并覆盖文件?如果不存在这样的反论点,我们如何绕过这种保护?

编辑:在Internet上找到的引用指出了mmap,并且该DLL可能尚未加载。就我而言,(仅导出的)方法已被调用,因此我可以合理地认为DLL已完全加载。

windows dll
1个回答
0
投票
我们还有另一个程序,监视源文件(实际上是自定义脚本编译器)上的任何修改,并且需要编译DLL(通过将源脚本转换为c ++代码并调用clang)。

我们现在有一个月的解决方案了(并且运行良好),让脚本编译器检查文件是否受到写保护,如果这样,则使用临时名称重命名该dll,最后进行编译。

主程序在此dll上捕获了更改,并能够重新加载它。

额外步骤在编译器启动时,我们检查是否存在任何临时dll,然后尝试将其删除。如果删除失败,可能是因为DLL正在使用中,我们将忽略它。

注意:我们需要将.dll和.pdb移到一个临时文件。我们删除.exp,.ilk和.lib以防万一。

© www.soinside.com 2019 - 2024. All rights reserved.