2011-09-02 95 views
0

在export.def文件一个可以把这样的诗句:导出功能

LIBRARY plug 
EXPORTS 
    funcName 
    main=funcName 

什么是这样的方式导出功能的效果?它是否导出属于同一个函数的两个函数名?还是只是出口功能,给它另一个名字?

+1

我没有意识到DEF文件仍在使用。我认为它们被大量弃用,并且非常沮丧地使用它们。 –

+2

您可以发表一个链接,告诉它为什么被弃用?找不到与Google相关的任何内容。 – Vadim

+0

模块定义文件不被弃用。它们是可选的,因为您可以使用__declspec(dllexport)和链接器开关完成大多数事情。但是你可以在没有dllexport的情况下创建一个导出别名(这就是这个问题的关键),你也不能指定序号(有时是二进制兼容性所必需的)。 .def文件将你需要了解的DLLs配置信息放在一个地方(对源代码管理有用)。否则,你必须通过项目文件或makefile(用于链接器选项)和源文件(用于dllexports)进行探索。 –

回答

2

根据MSDN

出口关键字可以是在同一行上如前面行上的第一个定义或 。 .def文件可以包含一个或多个EXPORTS 语句。

语法出口的定义是:

entryname[=internalname] [@ordinal [NONAME]] [PRIVATE] [DATA] 

EntryName是$,你要导出的函数或变量名。 这是必填项。如果您导出的名称与 DLL中的名称不同,请在带有内部名称的DLL中指定导出名称。对于 例如,如果你的DLL导出的函数,func1的(),你希望它是作为FUNC2 (),应指定:

EXPORTS func2=func1