您的位置:首页 > 编程语言 > C语言/C++

查看VC++生成的dll的方法或函数名[dumpbin使用方法]

2013-05-06 20:31 411 查看
来源: http://www.rczjp.cn/HTML/101227/20105127095149.html
查看VC++生成的dll的方法或函数名[dumpbin使用方法]

详细讲解dumpbin的使用方法

首先我们自己做个dll来测试下,内容如下:

#include "stdafx.h"
#include <stdio.h>

extern "C" __declspec(dllexport) int Max(int a,int b)
{
return a>b?a:b;
}
extern "C" __declspec(dllexport) int Min(int a,int b)
{
return a>b?b:a;
}

//此示例来自CSDN
extern "C" __declspec(dllexport) void GetName(char*
buffer, int* size)
{
printf("before copy the length is:%d\n", *size);//写数据前buffer的容量
char temp[] = "hello,world";
strcpy(buffer,temp); //模拟写数据
printf("OK, string is:%s\n", buffer);
*size = (int)strlen(temp);
printf("after copy the length is:%d\n", *size);//写数据后buffer的容量
}
生成一个MyVC.dll的文件,在这个文件中我们可以看到有三个方法:Max,Min,GetName

好了,现在我们使用dumpbin来看看这三个方法的位置,下次我们拿到新的dll的时候,我们就可以查看有哪些方法

进入VS的命令提示符,来到dll所在地址,比如我把它放到 C:\WINDOWS\system32文件夹下面

那么输入 cd C:\WINDOWS\system32

来到此目录下,输入 dumpbin /all MyVC.dll>result.txt

回车后,我们就可以看到一个 result.txt 文本文档,打开来看下,查找下其中一个方法名,可以看出有两个地方存在:

RAW DATA #3

100169C0: 47 65 74 4E 61 6D 65 40 38 00 5F 4D 61 78 40 38 GetName@8._Max@8

100169D0: 00 5F 4D 69 6E 40 38 00 00 00 00 00 00 00 00 00 ._Min@8.........

MyVC.pdb

ordinal hint RVA name

1 0 0001107D _GetName@8 = @ILT+120(_GetName@8)

2 1 0001111D _Max@8 = @ILT+280(_Max@8)

3 2 000110F5 _Min@8 = @ILT+240(_Min@8)

粗体标识出来的就是方法名

如果想了解怎么在C#中调用C++的dll的方法,请参考:

http://rczjp.cn/HTML/101226/20102826122850.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: