visual studio 2010 -查找dll在c++程序(MFC)中的加载位置



我有一个大型的遗留c++应用程序(Visual Studio 2010),我需要在加载特定的dll之前执行一些代码。问题是dll在我执行任何代码之前被加载,所以我试图找出是什么触发它加载。

我已经在链接选项中为dll指定了/DELAYLOAD,它应该在需要之前停止dll加载。但在我执行任何代码之前,它仍然会被加载。应用程序是MFC,所以我的入口点是CWinApp::InitApplication()的重写。

我怀疑它必须是应用程序中的一个全局变量,在dll中引用一个类型,但我不确定如何找到变量(代码库很大,全局变量不一致命名)。

任何想法如何找到什么触发dll加载,或者如何找到全局变量?

我通过在延迟加载辅助函数__delayLoadHelper2上设置一个断点来解决这个问题。这个函数可以在

中找到:
C:Program Files (x86)Microsoft Visual Studio 10.0VCincludedelayhlp.cpp

在加载标记为delay-load的dll时调用。

我在__delayLoadHelper2中设置了断点,并在遇到它时查看了调用堆栈。这显示了我代码中触发dll加载的函数。

它是由全局单例构造函数触发的,该构造函数从dll中创建了一个类型。此代码在CWinApp::InitApplication()之前执行。

相关内容

  • 没有找到相关文章

最新更新