_declspec(dllexport)和.def(转)

Posted stephen-qin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了_declspec(dllexport)和.def(转)相关的知识,希望对你有一定的参考价值。

节选自:windows下编译和使用动态库dll http://blog.eonew.cn/archives/865

Microsoft 在 Visual C++ 的 16 位编译器版本中引入了 __export,使编译器得以自动生成导出名并将它们放到一个 .lib 文件中。 然后,此 .lib 文件就可以像静态 .lib 那样用于与 DLL 链接。

在更新的编译器版本中,可以使用 declspec(dllexport) 关键字从 DLL 导出数据、函数、类或类成员函数。 declspec(dllexport) 会将导出指令添加到对象文件中,因此您不需要使用 .def 文件

当尝试导出 C++ 修饰函数名时,这种便利最明显。 由于对名称修饰没有标准规范,因此导出函数的名称在不同的编译器版本中可能有所变化。 如果使用 __declspec(dllexport),仅当解决任何命名约定更改时才必须重新编译 DLL 和依赖 .exe 文件。

许多导出指令(如序号、NONAME 和 PRIVATE)只能在 .def 文件中创建,并且必须使用 .def 文件来指定这些特性。 不过,在 .def 文件的基础上另外使用 __declspec(dllexport) 不会导致生成错误。

以上是关于_declspec(dllexport)和.def(转)的主要内容,如果未能解决你的问题,请参考以下文章

dllimport与dllexport作用与区别

转载 __declspec(dllexport) 和__declspec(dllimport)

__declspec(dllexport) 和 __declspec(dllimport)的区别

VS2017编译c dll的方法-编译bsio

VS2017编译c dll的方法-编译bsio

__declspec(dllexport)