我正在用C / C ++语言进行Visual Studio 2005或2010的开发。我想从二进制或执行文件中的符号表中获取全局结构定义信息。举一个例子如下。一个名为“TD”的全局结构和结构中的三个成员。编译代码后,信息将在符号表,PDB符号文件或DBG文件中。是否有任何一组函数来从符号表中抽象出信息?我可以获得会员的大小和该会员的类型吗?
typedef struct {
void * pointer;
int b;
char c;
}TD;
答案 0 :(得分:1)
您必须使用ISymbolReader界面。我在这里有C#示例:
// Create the Metadata dispenser.
IMetaDataDispenserEx pDispenser = new IMetaDataDispenserEx();
// Open the Metadata importer for the given file.
Guid importerIID = new Guid(RCWHelper.IID_IMetaDataImport);
IntPtr pImporter = IntPtr.Zero;
pDispenser.OpenScope(filepath, COR_OPEN_FLAGS.ofRead, ref importerIID, out pImporter);
SymBinder binder = new SymBinder();
ISymbolReader symReader = binder.GetReader(pImporter, filepath);
然后,您可以使用此接口的GetGlobalVariables和GetVariables方法获取有关变量的完整信息。