pad*_*igf 3 c++ dll mfc visual-studio-2010
我有大型遗留 C++ 应用程序(Visual Studio 2010),我需要在加载特定 dll 之前执行一些代码。问题是 dll 在我执行任何代码之前被加载,所以我试图找出是什么触发它加载。
我在链接选项中为 dll 指定了 /DELAYLOAD,它应该在需要之前停止 dll 加载。但是在我执行任何代码之前它仍然被加载。应用程序是 MFC,所以我的入口点是 CWinApp::InitApplication() 的覆盖。
我怀疑它必须是引用 dll 中类型的应用程序中的全局变量,但我不确定如何找到该变量(代码库很大,并且全局变量的命名不一致)。
任何想法如何找到触发 dll 加载的内容,或如何找到全局变量?
我通过在延迟加载辅助函数__delayLoadHelper2. 可以在以下位置找到此功能:
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\delayhlp.cpp
Run Code Online (Sandbox Code Playgroud)
当加载标记为延迟加载的 dll 时调用它。
我设置了断点__delayLoadHelper2并在它被击中时查看了调用堆栈。这显示了我的代码中触发 dll 加载的函数。
它是由全局单例构造函数触发的,该构造函数从 dll 创建了一个类型。这段代码在CWinApp::InitApplication().
| 归档时间: |
|
| 查看次数: |
475 次 |
| 最近记录: |