我想从一个DLL调用一个方法,但我没有源文件头文件.我试图使用dumpbin/exports来查看方法的名称,但我可以找到方法签名?
有没有办法调用这种方法?
谢谢,
我不确定我的问题是否有道理.我正在搜索与Visual Studio工具包中的dumpbin.exe类似的东西.
基本上我有一个包含一堆库和一个可执行文件的现有项目.我想弄清楚哪些库真正需要以及每个库中的哪个函数.
我只使用共享对象,因为该项目以ARM设备为目标.
我正在尝试使用由libgdx Android Java开发框架(gdx-bullet)包装的子弹物理库,并在一段短暂的随机工作时间之后使JVM崩溃或"纯虚拟方法称为"崩溃.
其中一些生成hs_err_pidXXXX.log文件,通常包含:
# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x0aa0c217, pid=7956, tid=7440
#
# JRE version: 7.0_05-b05
# Java VM: Java HotSpot(TM) Client VM (23.1-b03 mixed mode, sharing windows-x86 )
# Problematic frame:
# C [gdx-bullet.dll+0x1c217]
Current thread (0x04af2800): JavaThread "LWJGL Application" [_thread_in_native, id=7440, stack(0x04d70000,0x04dc0000)]
siginfo: ExceptionCode=0xc0000005, reading address 0x6572fc0f
Registers:
EAX=0x0073f370, EBX=0x0073f480, ECX=0x0073f484, EDX=0x6572fc07
ESP=0x04dbf3c0, EBP=0x04dbf400, ESI=0x0073f120, EDI=0x04dbf3f0
EIP=0x0aa0c217, EFLAGS=0x00010206
Instructions: (pc=0x0aa0c217)
0x0aa0c217: ff 52 08 f3 0f 10 05 0c f0 ba 0a f3 0f 10 4c …Run Code Online (Sandbox Code Playgroud) Windows SDK中是否有一个工具可以阻止库使用什么CRT?例如,我有一个*.lib文件,如何检查是否使用/ MDd标志或/ MT进行编译?还有如何检查dll或exe相同?这可以用dumpbin完成吗?
好的,所以我可以使用dumpbin.exe/exports library.dll来查找dll中的所有方法.
...但是我如何找出传递给他们的参数?当然没有头文件.
假设我有一个包含十几个不同模块的项目,它们生成一个结果DLL,我该如何分析它以便我可以识别每个模块/函数所贡献的实际文件大小?我知道在Release版本中可能无法删除大量信息,但是如果我拥有完整的源代码并且可以执行Debug构建怎么样?
另外,如果在某处定义了大的静态变量,有没有办法可以轻松找到它们?
奖金问题:Linux ELF文件怎么样?
我在使用大型静态库(.lib)文件时遇到了一些问题,并且怀疑代码是不加思索地使用模板类的.我想分析库中的符号,以确认哪些符号构成了文件大小的大部分.
当我将可执行文件链接到这个库时,结果输出更加合理,大小(大约20Mb),因此链接器显然剥离了大量冗余符号.我想知道它取消了什么..
我知道我可以使用dumpbin来生成符号和标题,但是,由于所讨论的库非常大(900Mb),如果没有用于解析和报告的实用程序,此转储几乎无法使用.
显然我可以自己写这个,但是想知道是否有人可以推荐任何已经可用的免费软件?
在创建最终图像之前,链接器在解析目标文件中的重定位时会采取哪些步骤?更具体地说,链接器如何处理已经存储在重定位站点的值?它总是将它添加到最终的VA/RVA中,还是有时会被忽略(例如某些重定位类型)?
我在MS PE/COFF Specfication中找不到清晰的解释,经过谷歌搜索和实验一段时间后,我所能发现的是:
您能否指出我的任何(相关)文档,它解释了链接器如何处理重定位?
我正在写一个小的PE读取器,所以我在我的测试应用程序旁边运行dumpbin以确认正确读取了值.到目前为止它所做的一切,除了导出表.
我正在测试的文件是一个DLL.我的应用程序以字节数组的形式读取文件,并将其传递给我的PE读取器类.这些值与dumpbin输出的值一致,包括RVA和导出数据目录的大小.
E000 [ 362] RVA [size] of Export Directory
Run Code Online (Sandbox Code Playgroud)
问题是,字节数组的大小只有42,496.你可以想象,当我的PE阅读器尝试在E000(57,344)阅读时,我得到了一个IndexOutOfRangeException.但是,dumpbin没有这样的问题,并且读取导出目录就好了.是的,整个文件确实被读入字节数组.
这怎么可能?
这是我得到的输出 dumpbin AchievementsTable.obj /HEADERS
Microsoft (R) COFF/PE Dumper Version 8.00.50727.762
Copyright (C) Microsoft Corporation. All rights reserved.
Dump of file AchievementsTable.obj
File Type: ANONYMOUS OBJECT
ANON OBJECT HEADER VALUES
1 version
14C machine (x86)
4C51334D time date stamp Thu Jul 29 08:52:45 2010
ClassID: {0CB3FE38-D9A5-4DAB-AC9B-D6B6222653C2}
945F size
0 flags
Run Code Online (Sandbox Code Playgroud)
我的所有来源都这样做.我正在使用VisualStudio 2005.我知道有很多COMDAT正在导出,因为.exe随后链接并正确执行:是否有编译器开关我应该避免?这是我正在使用的:
/O1
/Ob2
/Oi
/GT
/GL
/I "..\dxsdk\include" <lots of include paths>
/D "WIN32" <lots of #defines>
/GF
/FD
/MT
/GS-
/Gy
/arch:SSE2
/fp:fast
/GR-
/Fo <directory specified>
/Fd <pdb …Run Code Online (Sandbox Code Playgroud) dumpbin ×10
c++ ×3
dll ×2
signature ×2
windows ×2
.net ×1
bullet ×1
bytearray ×1
c# ×1
coff ×1
crt ×1
diagnostics ×1
import ×1
libgdx ×1
linux ×1
low-level ×1
msvcrt ×1
pe-exports ×1
performance ×1
relocation ×1
symbols ×1
visual-c++ ×1
winapi ×1
windbg ×1