obsidian/笔记文件/2.笔记/dllexport与dllimport的区别.md
2025-03-26 00:02:56 +08:00

1.6 KiB

#qt

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

__declspec(dllexport)__declspec(dllimport) 是用于在 Windows 平台上定义导出和导入函数或变量的关键字。它们的作用如下:

  1. __declspec(dllexport): 当您在定义一个函数或变量时使用__declspec(dllexport)关键字时,它告诉编译器将该函数或变量导出到生成的 DLL 中,以便其他程序可以使用它。这意味着该函数或变量将在 DLL 中可用,并且可以被其他程序使用。
__declspec(dllexport) void MyFunction();  // 导出函数
__declspec(dllexport) int myGlobalVariable;  // 导出变量
  1. __declspec(dllimport): 当您在使用一个已经存在于 DLL 中的函数或变量时使用__declspec(dllimport)关键字时,它告诉编译器该函数或变量是从另一个 DLL 中导入的,而不是在当前的代码文件中定义的。这样,编译器知道它需要在运行时从 DLL 中加载该函数或变量。
__declspec(dllimport) void MyFunction();  // 导入函数
__declspec(dllimport) int myGlobalVariable;  // 导入变量

在使用这些关键字时,通常会在导出函数或变量的头文件中使用__declspec(dllexport),而在导入函数或变量的头文件中使用__declspec(dllimport)。这样,当您编译 DLL 时,函数和变量将被导出;而在使用 DLL 的应用程序中,编译器将知道它们需要从 DLL 中导入。

总之,__declspec(dllexport) 用于将函数或变量导出到 DLL 中,而 __declspec(dllimport) 用于在应用程序中将函数或变量从 DLL 中导入。