在VS 2005中,我可以通过在IDE中显式设置选项来查看libs
链接器的路径。如何找到加载相应dll
的位置?
1>Searching libraries
1> Searching C:\Program Files (x86)\Microsoft Visual Studio 8\VC\lib\msvcrtd.lib:
1> Found _memcpy
1> Referenced in deflate.obj
1> Referenced in gzio.obj
1> Referenced in infback.obj
1> Referenced in inflate.obj
1> Loaded msvcrtd.lib(MSVCR80D.dll)
在上述情况中,MSVCR80D.dll
来自哪里?我在 VC 目录中搜索了 dll ,并弹出了10多个结果。有没有简单的方法可以找到哪一个是完全加载的?
答案 0 :(得分:3)
DLL实际上是在运行时加载的,而不是在链接时加载的。实际上,本机DLL甚至不必存在于机器中以进行链接。
您可以在调试器(通常是F5)中看到运行程序的信息,并从“Debug”子菜单IIRC打开“模块窗口”。
此外,您可以分析可执行文件并尝试推断将加载哪个DLL。毫无疑问,最好的工具是Dependency Walker。它也可以分析DLL(很酷),但它可能会遇到托管DLL的麻烦。