2016-11-15 118 views
0

有大量的提供了有关如何从DLL(我已经做过很多次)导出函数的信息,但我听说,这也可以从一个可执行文件中导出函数,以便外部DLL可以调用它们。导出功能

虽然我已经成功地得到这个工作,它好像有一些问题的切入点:

  • 如果没有明确设置,则默认为错误的“主”在 一个不起眼的子库。
  • 如果明确设置,那么它的输入参数,argc和argv遭到损坏(ARGC可以〜20000000或〜-700000)。

我无法找到有关从可执行文件导出函数的任何文档 - 我应该采取暗示而不是做它?

[背景:这是为了使在Windows和Linux的过程我们工作的一部分。 Linux版本意外地从可执行文件中获取函数,而不是从助理dll中明确导出的函数(这些函数具有相同的名称,但具有不同的参数)。我们决定尝试这种运行,从Windows可执行文件导出功能以及]

回答

0

我张贴这只是总结这个我自己的学习,在没有更好的答案:

  • 立即加入DEF文件后,链接器抱怨说,它不能确定的切入点。正因为如此,我添加了/ ENTRY参考。然而,在返工期间,我删除了/ ENTRY,同时删除了def文件,并且我可以毫无错误地进行编译 - 在此期间,我必须删除一个微妙的冲突选项。
  • DEF文件确实从.exe导出函数成功,而这些可以然后在这个过程中的一个dll可以使用(如果它链接到DELAYIMP.LIB和可执行的.LIB)。
  • 我从来没有能够拿到/ ENTRY选项令人满意的工作,并与在MSDN项目[https://msdn.microsoft.com/en-us/library/f9t8842e.aspx]轻度泄气的意见结合起来,我认为没有理由在这种情况下使用它。

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