【问题标题】:Function order in the binary二进制中的函数顺序
【发布时间】:2015-10-20 11:56:31
【问题描述】:

我需要在可执行文件中控制我的函数顺序。 我知道它可以通过 Visual Studio 中的链接器选项“功能顺序”来完成,但它会因错误而失败: LNK4037: [函数名] 不存在

我相信是因为 cpp 编译器给函数起奇怪的名字,但我找不到合适的名字来使用。

还有另一个选项,pragma alloc_text,但它只在 c 中有效。不是 cpp。

Tnx 寻求帮助 :)

【问题讨论】:

  • 让编译器输出一个链接器映射。在那里你会找到你的函数的错位名称。不用说,在可执行文件中依赖特定顺序的函数通常不是一个好主意。你认为你需要它的原因是什么?

标签: c++ visual-studio linker


【解决方案1】:

Map 文件包含 修饰名称,如果您想控制相同函数名称的各种重载之间的顺序,这可能会让人很不舒服。

还有另外两种documented查看修饰名的方式,我个人的建议是使用Listing Files:Project Property Pages -> C/C++ -> Output Files -> Assembler Output。

另一种方法是检查 dumpbin 输出 - 但我个人尽量避免使用命令行工具。

【讨论】:

  • 你是对的。我使用dumpbin查看了损坏的名称,问题解决了。 Tnx
猜你喜欢
  • 1970-01-01
  • 2015-11-07
  • 2021-05-17
  • 1970-01-01
  • 2021-01-27
  • 2018-04-25
  • 2020-11-24
  • 1970-01-01
  • 2016-10-19
相关资源
最近更新 更多