函数如何通过序号导出?

大部分function都是输出名字,但有的按顺序输出,

这些函数是如何被调用的?

@AProgrammer:你的问题有两个答案。 首先,链接器将知道调用哪个序号。 创建库时,该信息保存在.lib文件中。 否则,如@ c-smile所指出的那样,你可以使用GetProcAddress来找到该函数并调用它。

int ordinal = xxx; functor = (MyFunctorType) GetProcAddress(hMod, (LPCSTR) ordinal); if (functor) { functor(...); } 

@DriverBoy:是的,这意味着.DLL中不能有多于65536个导出的符号。

http://msdn.microsoft.com/en-us/library/ms683212(v=vs.85).aspx

lpProcName [in]函数或变量名称,或函数的序号值。 如果这个参数是一个序数值,它必须在低位字中。 高位字必须为零。