编译器如何确定导入表中的函数顺序

时间:2014-03-19 07:12:08

标签: c++ windows compiler-construction

解析的顺序是否影响导入表中的函数顺序  (即遇到的第一个函数是导入表中的第一个?)还是其他的东西?

谢谢!

EDIT
我使用的是Visual Studio,但是关于其他编译器的答案也会很棒!

2 个答案:

答案 0 :(得分:2)

编译器与它无关,链接器创建该表。没有预设顺序,只是链接器在目标文件中遇到导出的顺序。您可以使用.def文件使其可预测。

没有真正的意义,表中导出的位置不会影响任何事情。表条目始终按顺序或名称定位,从不定位。 GetProcAddress()微优化是您在实践中永远不会看到的优化,磁盘I / O开销将其吹走。

答案 1 :(得分:1)

<强>取决于即可。动态链接以及DLL和IAT不是标准C ++的一部分,而是许多编译器实现的扩展。简而言之, if 他们这样做是编译器特定的。也许你正在使用的编译器在文档中有关于它的东西。