【问题标题】:Does link.exe have an equivalent to ld's "--wrap" option?link.exe 是否与 ld 的“--wrap”选项等效?
【发布时间】:2012-05-17 16:48:22
【问题描述】:

作为参考,我正在寻找与此类似的东西:

--wrap=symbol 对符号使用包装函数。任何未定义的符号引用都将解析为“__wrap_symbol”。任何 对“__real_symbol”的未定义引用将被解析为符号。

link.exe 是否存在这种情况?我没有在 MSDN 链接器页面上看到任何突出的内容。

编辑:我的开发环境不支持 DLL,因此仅 DLL 的解决方案在这里无济于事。

【问题讨论】:

  • 据我所知没有。该线程包含一些关于类似主题的讨论,可能会有所帮助:stackoverflow.com/questions/1316018/…
  • 感谢您的链接。 /nodefaultlib 的组合,定义我自己的符号,并直接链接到 crt 可能会成功。我将不得不解决这个问题。

标签: c++ linker


【解决方案1】:

对于 DLL 来说很棘手但可能。您的 DLL 应该实现 wrap_symbol 并链接到 .DEF 文件,该文件将其重命名为 symbol。您可以在 DLL 中以 symbol() 的形式调用原始函数,因为稍后会重命名 wrap_symbol

【讨论】:

  • 我应该澄清一下,这是为了控制台开发。我们不使用 DLL,因为它们会对我们的加载时间和性能产生负面影响(我们失去了 /ltcg 支持)。
  • 哦,/LTCG 部分比您可能意识到的更重要。您的库不包含 symbol 的程序集,但它的(预处理)代码。顺便说一句,出于类似的原因,似乎 GCC 在-flto --wrap 上有一个未解决的问题。
猜你喜欢
  • 1970-01-01
  • 2010-12-05
  • 2016-10-09
  • 1970-01-01
  • 2011-04-21
  • 2016-05-11
  • 1970-01-01
  • 2011-05-28
  • 1970-01-01
相关资源
最近更新 更多