C++ 如何找出Kernel32依赖项的来源
我正在构建一个应用程序,我刚刚在其中添加了一个库(它又使用了许多其他库),出于某种原因,它试图使用kernel32.dll中的“GetLogicalProcessorInfo”。不幸的是,这个函数比我的一些用户正在使用的Windows版本更新(一些用户正在使用XP SP2,这个函数需要XP SP3)-所以我得到了关于这个的错误报告 我试图弄清楚为什么这个函数被引用,但是我找不到它。我在使用的任何.lib文件中都没有看到它。或在任何.cpp或.h文件中。尽管如此,还是有一些东西触发了这个函数的使用 那么,有没有办法找出这是从哪里来的?哪个函数或哪个库正在使用它C++ 如何找出Kernel32依赖项的来源,c++,visual-studio,windows-xp,C++,Visual Studio,Windows Xp,我正在构建一个应用程序,我刚刚在其中添加了一个库(它又使用了许多其他库),出于某种原因,它试图使用kernel32.dll中的“GetLogicalProcessorInfo”。不幸的是,这个函数比我的一些用户正在使用的Windows版本更新(一些用户正在使用XP SP2,这个函数需要XP SP3)-所以我得到了关于这个的错误报告 我试图弄清楚为什么这个函数被引用,但是我找不到它。我在使用的任何.lib文件中都没有看到它。或在任何.cpp或.h文件中。尽管如此,还是有一些东西触发了这个函数的使用
我在Visual Studio 2015中开发了英特尔C++编译器。有一种方法可以告诉它为Windows XP编译,但支持的最低版本是SP3-在我添加这个库之前,我的代码运行良好。如果我必须推动人们迁移到SP3,那就这样吧,但我宁愿不这样做。许多人将运行“我的软件”的pc作为一个设备使用,通常甚至没有连接到internet,并且已经运行了多年(因此使用了旧的操作系统)。如果您有免疫调试器或ollydbg,您可以在其中打开程序。加载后,右键单击并选择显示程序导入的所有模块的视图。选择您的库并再次右键单击,然后单击搜索->所有模块间调用,您将看到模块从外部库调用的函数列表。如果双击特定函数,它将带您到程序中调用该内核32函数的位置
最有可能的情况是,您可能无法摆脱它,因为它将被您无法控制的库的其他部分使用。人们通常使用它取决于此。