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

查看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 ", *size);//写数据前buffer的容量

char temp[] = "hello,world";

strcpy(buffer,temp); //模拟写数据

printf("OK, string is:%s ", buffer);

*size = (int)strlen(temp);

printf("after copy the length is:%d ", *size);//写数据后buffer的容量

}

生成一个MyVC.dll的文件,在这个文件中我们可以看到有三个方法:Max,Min,GetName

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

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

那么输入 cd C:WINDOWSsystem32

来到此目录下,输入 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 .........

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的方法,请参考:

经验分享 程序员 微信小程序 职场和发展