今天调试一个程序时发现出现"无法定位程序输入点getlogicalprocessorinformation于动态链接库kernel32.dll"错误,可是程序也没引用getlogicalprocessorinformation这个函数。

首先猜想会不会是微软的bug,所以拿depends工具看下,


B区为对应kernel32.exe所有导出函数,A区为本exe导入的kernel32.exe中的函数。一看,还真链接了kernel32.exe函数,说明不是微软bug。

C++ 11 thread静态链接getlogicalprocessorinformation导致错误


再查网上,原来XP SP3前没有getlogicalprocessorinformation这个函数,现在程序报这个错误,可又没有明确的静态链接这个函数,所以我想肯定是什么库,静态链接了这个函数,所以直接用IDA逆向看下。还好自己的程序有pdb,找到Imports导入表中的getlogicalprocessorinformation,一路向上查找引用,最终看到

C++ 11 thread静态链接getlogicalprocessorinformation导致错误

调用的类看起来包装了很多层,看到这里Concurrency(并发)、Scheduler(调度),自然想到应该是跨平台的线程类导致的,果然代码中有C++ 11的thread类,将其改造成windows线程类调用,一起OK。


C++ 11果然还是有坑~~

原创,转载请注明来自http://blog.csdn.net/wenzhou1219

相关文章:

  • 2021-08-20
  • 2022-12-23
  • 2021-06-20
  • 2022-12-23
  • 2021-07-17
  • 2022-02-11
  • 2021-07-31
猜你喜欢
  • 2021-07-09
  • 2022-12-23
  • 2022-12-23
  • 2021-09-04
  • 2021-11-30
  • 2021-09-18
相关资源
相似解决方案