【发布时间】:2018-01-09 17:49:30
【问题描述】:
我有一个不能在 WinXP 下运行的 Visual Studio 2015 C++ 项目,因为函数 getTickCount64() 在某处被调用(仅 Vista 和更高版本)。该函数位于外部库 Kernel32.dll 中,因此我无法将其声明为已弃用以获取编译器警告。
我检查了很多次,我没有自己调用该函数,它必须在我正在使用的第 3 方库中。
我怎样才能知道函数在哪里被调用?
【问题讨论】:
-
我会在可执行文件上使用Dependency Walker 来找出答案。 @UKMonkey 缺少依赖项的程序根本不会启动,更不用说可调试了。
-
@Quentin 正确,但它没有缺少依赖项,dll 存在。 dll中的函数没有,所以运行时会失败。
-
你应该调试它并在调用该函数时查看调用堆栈。
-
@UKMonkey:不,它不是特定于应用程序的。当操作系统加载程序尝试加载任何对缺少的 DLL 函数具有静态依赖关系的可执行文件时,它本身会引发该错误。您将没有任何机会调试可执行文件,因为根本没有创建进程。
标签: c++ visual-studio