从DLL导出函数 - 使用DEF文件还是dllexport?

时间:2010-07-23 02:17:25

标签: visual-c++

  

提供模块定义(.def)文件   链接器有关于的信息   出口,属性和其他   有关该计划的信息   链接。 .def文件最有用   在构建DLL时。因为有   可以使用的链接器选项   而不是模块定义   语句,.def文件一般   不必要。你也可以使用   __declspec(dllexport)作为指定导出函数的方法。

http://msdn.microsoft.com/en-us/library/28d6s79h%28VS.80%29.aspx

我想知道,我们应该更喜欢 .def 吗?还是 dllexport 方式?

2 个答案:

答案 0 :(得分:2)

如果您计划在Visual Basic(而不是VB.NET)中使用DLL的用户,那么您可能希望选择使用.DEF文件。 Visual Basic要求函数使用stdcall调用约定,导出的stdcall函数名称用下划线(_)修饰。您可以通过在.DEF文件中显式指定函数名来覆盖此函数名称修饰。

有关详细信息:http://msdn.microsoft.com/en-us/library/dt232c9t%28VS.90%29.aspx

答案 1 :(得分:2)

模块定义(.def)文件为我们提供了更灵活的定义数据导出方式。

例如,导出的函数可以是匿名的(由序数标识),可以防止没有声明信息的人使用它。

它还可以进行ddo功能转发/重定向,如下所述:
http://msdn.microsoft.com/en-us/library/hyx1zcd3(v=VS.80).aspx