以下是链接 1 的摘录。
Microsoft 在 Visual C++ 的 16 位编译器版本中引入了 __export,以允许编译器自动生成导出名称并将它们放在 .lib 文件中。然后可以像使用静态 .lib 一样使用此 .lib 文件与 DLL 链接。在较新的编译器版本中,您可以使用 __declspec(dllexport) 关键字从 DLL 导出数据、函数、类或类成员函数。__declspec(dllexport) 将导出指令添加到目标文件,因此您不需要使用 .def 文件。
我在一定程度上理解了上面的段落,但不是很好。
以下是链接2的摘录。
构建 DLL 时,链接器使用 .def 文件来创建导出 (.exp) 文件和导入库 (.lib) 文件。然后链接器使用导出文件来构建 DLL 文件。隐式链接到 DLL 的可执行文件在构建时链接到导入库。
现在,这让我很困惑,让我问了以下问题:
谁能用简单的话告诉我出口这个词的 真正含义?我相信这使得一个对象可以从一段代码访问到另一段代码——但是,嘿!
在使用旧库构建项目时,我在大多数库中都看到了 .def 文件。但是最新的编译器会自动导出对象。将旧版本的 Visual Studio 项目转换为新版本时,.def 文件的存在会导致任何冲突吗?
.dll生成后的.lib(所谓的导入文件)有什么用。可以安全删除吗?
啊啊啊!!静态库(.lib)和导入库(.lib)有什么区别?大错特错吧?但是还是!!
是windows特有的现象吗?我相信不是。所谓的导入文件的 Linux 对应物是什么?
如果问题还不清楚,请随时改写问题。