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

来源: http://www.rczjp.cn/HTML/101227/20105127095149.html

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

 

 

详细讲解dumpbin的使用方法

 

 

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

#include "stdafx.h"

#include <stdio.h>

 

extern "C" __declspec(dllexportint Max(int a,int b)

{

    return a>b?a:b;

}

extern "C" __declspec(dllexportint Min(int a,int b)

{

    return a>b?b:a;

}

 

//此示例来自优快云

extern "C" __declspec(dllexportvoid 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的文件,在这个文件中我们可以看到有三个方法:MaxMinGetName

 

好了,现在我们使用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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值