代码优化,WINDOWS下使用DUMPBIN提取DLL文件中的符号

在Windows下,为了从DLL文件中提取特定符号,通常会使用DUMPBIN工具,但由于它依赖于VC环境,这导致了效率问题。本文介绍了如何仅依赖dumpbin.exe、link.exe和mspdb100.dll(版本可能随dumpbin和VS变化)这三个文件,实现DLL文件的符号提取,从而提高效率。
摘要由CSDN通过智能技术生成

一个跨平台软件,其中有一段代码,需要从动态链接库中提取出匹配指定规则的符号,在Linux中,使用了objdump对.so文件进行反汇编,提取符号,但在Windows当中,由于没有objdump,虽然有dumpbin也可以对.dll文件进行反汇编,但依赖于vc环境,所以之前一直是使用遍历匹配的方式,来查找匹配的符号,效率很低。今天突然想到以前的项目中,在windows里用sed时,只需要部署几个相关的exe和库,联想到,可否只部署dumpbin.exe以及相关的库?尝试着排除了下,竟然只需要三个文件:

dumpbin.exe

link.exe

mspdb100.dll(该文件名随dumpbin及VS版本变动)。  

上代码:

 

#ifdef _WIN32
			QString qExeCmd = "dumpbin -exports " + libFile;
#else
			QString qExeCmd =  "objdump -x " + libFile;
#endif
			QProcess *proc = new QProcess();

			proc->start(qExeCmd);
			proc->waitForFinished(1000);	                            //等待执行完毕,同时防止程序长时间BLOCK

			QString qOutput(proc->readAllStandardOutput());

			QRegExp regExp;
			
			regExp.setPattern("(T_[0-9,a
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值