首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Visual Studio从Exe导出符号

Visual Studio从Exe导出符号
EN

Stack Overflow用户
提问于 2011-06-21 18:55:46
回答 1查看 1.9K关注 0票数 0

我试图从一个可执行文件导出符号--exe的主要部分是一个交互式shell,而导出的符号则为外部程序提供功能。

这是我当前导出的宏:

代码语言:javascript
复制
#define LIB_EXP extern "C" __declspec(dllexport) void __cdecl

出口功能:

代码语言:javascript
复制
LIB_EXP Register() { /**/ }

如果我直接使用cl.exe --没有任何开关--我会得到以下符号表,它看起来很好:

代码语言:javascript
复制
00000000 characteristics
4E00E611 time date stamp Tue Jun 21 20:42:25 2011
    0.00 version
       1 ordinal base
       1 number of functions
       1 number of names

ordinal hint RVA      name

      1    0 00001000 Register

Summary

    4000 .data
    5000 .rdata
    2000 .reloc
   11000 .text

使用VS 2010进行编译将得到以下符号表:

代码语言:javascript
复制
00000000 characteristics
4E00E369 time date stamp Tue Jun 21 20:31:05 2011
    0.00 version
       1 ordinal base
       1 number of functions
       1 number of names

ordinal hint RVA      name

      1    0 00011005 Register = @ILT+0(_Register)

Summary

    1000 .data
    1000 .idata
    3000 .rdata
    1000 .reloc
    1000 .rsrc
    6000 .text
   10000 .textbss

由于导入这个exe的程序使用的是后期绑定,并且正在通过"GetProcAddress“查找导出的函数,所以我依赖于函数的名称是否与指定的名称完全相同。有谁知道"= @ILT+0(_Register)“这个看起来有点像名字混乱的东西是从哪里来的,我怎么能摆脱它呢?VS-C++-项目使用“空项目”模板,是未经修改的…。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-06-21 21:26:57

Dumpbin使用.pdb文件提供更多信息。它包含调试信息,默认情况下,Visual项目会生成调试信息。您最初的手工编译版本没有创建.pdb。删除.pdb以获得相同的输出。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6430508

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档