代码之家  ›  专栏  ›  技术社区  ›  zildjohn01

如何在MSVC 2005中手动装饰链接器名称?

  •  2
  • zildjohn01  · 技术社区  · 16 年前

    有没有办法在MS C++中手动装饰函数名?我想任何解决方案都是微软特有的,我对此很满意。

    或者,是否有方法声明函数“ ??_M@YGXPAXIHP6EX0@Z@Z “所以编译器可以理解它?仅供参考, undname 将其列为:

    void _ _ stdcall `eh vector destructor iterator'(void * , unsigned int, int, void (_ _thiscall * )(void * ))

    显然,编译器对标识符中的撇号不满意。

    编辑:

    谢谢大家的想法。

    4 回复  |  直到 16 年前
        1
  •  0
  •   Fabio Ceconello    16 年前

    并使用禁用下划线前缀的链接器选项,您在代码中给出的名称就是您在.obj文件中的名称。但这并不能解决你所有的问题,因为当你试图声明一个名称中有特殊字符的函数时,编译器会犹豫不决。

        2
  •  0
  •   dirkgently    16 年前

    `eh向量析构函数迭代器'

    你确定撇号是标识符的一部分吗?你试过在没有它们的情况下使用这个功能吗?看起来它们的存在是为了提高可读性。

    或者,是否有方法声明函数“?”??_M@YGXPAXIHP6EX0@Z@Z“

    这是一个残缺的名字。所有带有C++链接的符号都被破坏了。这是签名、返回类型和调用约定信息的哈希值。阅读更多 MSDN .

        3
  •  0
  •   ChrisW    16 年前

    一种方法可能是用汇编语言编写代码,这可能(但也可能不)允许您为函数使用几乎任何名称。

    ]*.def文件的EXPORTS部分允许的语法(允许您重命名导出的内容)。

        4
  •  0
  •   skanev    12 年前

    void __stdcall __ehvec_dtor(void*__arr,无符号int __size,int_ n、 无效(