来源: 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;
}
//此示例来自优快云
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的方法,请参考: