加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 电商 > 正文

winapi – VS 2012命名修改仍然适用于dll导出

发布时间:2021-01-28 16:23:59 所属栏目:电商 来源:网络整理
导读:为什么名称修改仍然应用于func3()的签名. 我错过了什么?我已经回顾了这些先前提出的问题 1,2 没有引用DEF文件. // dllmain.cpp#include "stdafx.h"extern "C" __declspec( dllexport ) double __cdecl func1(int id,double t){ return(1.01);};extern "C" _

为什么名称修改仍然应用于func3()的签名.
我错过了什么?我已经回顾了这些先前提出的问题 1,2
没有引用DEF文件.

// dllmain.cpp
#include "stdafx.h"

extern "C"  __declspec( dllexport ) double __cdecl func1(int id,double t)
{
    return(1.01);
};

extern "C" __declspec( dllexport ) int __cdecl func2(int id)
{
    return(2);
};

extern "C" __declspec( dllexport ) int __cdecl func3(char* file)
{
    return(1);
};

......

这是dumpbin / EXPORTS的输出:

00000000 characteristics
    51B78F5E time date stamp Tue Jun 11 13:58:06 2013
        0.00 version
           1 ordinal base
           3 number of functions
           3 number of names

    ordinal hint RVA      name

          1    0 00003870 func1 = func1
          2    1 00003880 func2 = func2
          3    2 00001A00 func3 = ?do_encoding@codecvt_base@std@@MEBAHXZ (protected: virtual int __cdecl std::codecvt_base::do_encoding(void)const )

解决方法

导出不会被破坏,您可以清楚地看到dumpbin.exe输出中未编码的名称.你也看到了错位的名字.那个dumpbin.exe有点太有用了,也许,它还会读取.pdb文件来查找函数的实际名称.它显示在=的右侧

只需删除.pdb文件并再次运行dumpbin.exe即可查看差异.

你没有问题,它有效.

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读