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

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

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


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



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


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


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

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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值