标准可执行文件可以有导出表吗?

时间:2014-06-03 20:19:42

标签: dllexport portable-executable

我有一个用C编写的可执行文件,其中包含一些我希望在c#应用程序中使用的函数。我以前写了很多dll,并且能够通过在函数声明中加上__declspec(dllexport)来使用函数。我可以用可执行文件执行此操作吗?可执行文件实际上会导出函数吗?

1 个答案:

答案 0 :(得分:5)

是的,你可以!是的,可执行文件将导出函数。这不是经常做的,但它的效果非常好。根据可执行文件的规范(http://msdn.microsoft.com/en-us/gg463119.aspx),就Exports而言,DLL和Executable之间没有区别。像DLL这样的EXE可以有一个Export Table目录,该目录记录了图像将导出的函数。作为“正常”可执行文件导出功能的示例,请查看Chrome.exe。请参阅我使用PEStudio制作的snapshot,其中显示Chrome导出了一些功能。某些Windows内置的可执行文件也导出功能(例如本地安全机构子系统 - lsass.exe)。 Windows内核(ntoskrnl.exe)映像还会导出2000多个函数(在Windows7系统上)。