gpt4 book ai didi

c++ - 使用 def 文件从可执行文件中导出函数

转载 作者:太空宇宙 更新时间:2023-11-04 10:29:23 25 4
gpt4 key购买 nike

有很多关于如何从 dll 导出函数的信息(我做过很多次),但我听说也可以从可执行文件导出函数,所以外部 dll 可以调用它们。

虽然我已经设法让它工作了,但似乎入口点有问题:

  • 如果未明确设置,则默认为错误的“main”一个不起眼的子图书馆。
  • 如果它明确设置,那么它的输入参数 argc 和 argv 会被破坏(argc 可以是 ~20000000 或 ~-700000)。

我在查找有关从可执行文件导出函数的任何文档时遇到问题 - 我应该接受提示而不是这样做吗?

[上下文:这是使我们的流程在 Windows 和 Linux 上都能运行的努力的一部分。 Linux 版本意外地从可执行文件中获取函数,而不是从附属 dll 中显式导出的函数(函数具有相同的名称,但参数不同)。我们决定尝试使用它运行,并从 Windows 上的可执行文件中导出函数。]

最佳答案

我发布这个只是为了总结我自己在这方面的学习,没有更好的答案:

  • 添加 def 文件后,链接器立即提示无法确定入口点。正是出于这个原因,我添加了/ENTRY 引用。然而,在返工期间,我在删除 def 文件的同时删除了/ENTRY,并且我可以无错误地编译 - 我一定同时删除了一个微妙的冲突选项。
  • def 文件确实成功地从 .exe 导出函数,然后这些可以用于该进程的 dll(如果它链接到 DelayImp.lib和可执行文件的 .lib)。
  • 我从来没有能够让/ENTRY 选项令人满意地工作,并且结合了对 MSDN 项目 [ https://msdn.microsoft.com/en-us/library/f9t8842e.aspx] 的温和令人沮丧的评论。 ,我认为在这种情况下没有理由使用它。

我希望这对任何试图做类似事情的人都有用。我很乐意将一个更具技术性的答案重新指定为“解决方案”,如果出现...

关于c++ - 使用 def 文件从可执行文件中导出函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40616940/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com