Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何找出Kernel32依赖项的来源_C++_Visual Studio_Windows Xp - Fatal编程技术网

C++ 如何找出Kernel32依赖项的来源

C++ 如何找出Kernel32依赖项的来源,c++,visual-studio,windows-xp,C++,Visual Studio,Windows Xp,我正在构建一个应用程序,我刚刚在其中添加了一个库(它又使用了许多其他库),出于某种原因,它试图使用kernel32.dll中的“GetLogicalProcessorInfo”。不幸的是,这个函数比我的一些用户正在使用的Windows版本更新(一些用户正在使用XP SP2,这个函数需要XP SP3)-所以我得到了关于这个的错误报告 我试图弄清楚为什么这个函数被引用,但是我找不到它。我在使用的任何.lib文件中都没有看到它。或在任何.cpp或.h文件中。尽管如此,还是有一些东西触发了这个函数的使用

我正在构建一个应用程序,我刚刚在其中添加了一个库(它又使用了许多其他库),出于某种原因,它试图使用kernel32.dll中的“GetLogicalProcessorInfo”。不幸的是,这个函数比我的一些用户正在使用的Windows版本更新(一些用户正在使用XP SP2,这个函数需要XP SP3)-所以我得到了关于这个的错误报告

我试图弄清楚为什么这个函数被引用,但是我找不到它。我在使用的任何.lib文件中都没有看到它。或在任何.cpp或.h文件中。尽管如此,还是有一些东西触发了这个函数的使用

那么,有没有办法找出这是从哪里来的?哪个函数或哪个库正在使用它


我在Visual Studio 2015中开发了英特尔C++编译器。有一种方法可以告诉它为Windows XP编译,但支持的最低版本是SP3-在我添加这个库之前,我的代码运行良好。如果我必须推动人们迁移到SP3,那就这样吧,但我宁愿不这样做。许多人将运行“我的软件”的pc作为一个设备使用,通常甚至没有连接到internet,并且已经运行了多年(因此使用了旧的操作系统)。

如果您有免疫调试器或ollydbg,您可以在其中打开程序。加载后,右键单击并选择显示程序导入的所有模块的视图。选择您的库并再次右键单击,然后单击搜索->所有模块间调用,您将看到模块从外部库调用的函数列表。如果双击特定函数,它将带您到程序中调用该内核32函数的位置


最有可能的情况是,您可能无法摆脱它,因为它将被您无法控制的库的其他部分使用。

人们通常使用它取决于此。