__declspec(dllimport)真的意味着什么?
我看到了这样的Qt源代码:
class Q_CORE_EXPORT QBasicAtomicInt { public: ... };  哪个Q_CORE_EXPORTmacros定义如下: 
 define Q_DECL_IMPORT __declspec(dllimport) 
 那么__declspec(dllimport)是什么意思? 
  __declspec是Microsoft特有的属性,允许您指定存储级别的信息。 
  (Nitpicker's Corner:但是,现在还有一些编译器供应商(如GCC)支持这种语言扩展,以便与针对微软编译器编写的已安装的代码库兼容,甚至还提供了额外的存储类属性。 
 其中两个可以指定的存储类属性是dllimport和dllexport 。 这些向编译器指示函数或对象是从DLL导入或导出(分别)。 
 更具体地说,它们定义了DLL的客户端接口,而不需要模块定义( .DEF )文件。 大多数人发现使用这些语言扩展比创buildDEF文件要容易得多。 
 出于显而易见的原因, __declspec(dllimport)和__declspec(dllexport)通常是相互配对的。 您使用dllexport标记从DLL导出的符号,并使用dllimport将导出的符号导入到另一个文件中。 
正因为如此,并且因为在编译DLL和使用DLL接口的客户端代码中通常使用相同的头文件,所以定义一个在编译时自动parsing为适当的属性说明符的macros是一种常见模式。 例如:
 #if COMPILING_DLL #define DLLEXPORT __declspec(dllexport) #else #define DLLEXPORT __declspec(dllimport) #endif 
 然后标记应该使用DLLEXPORT导出的所有符号。 
 据推测,这就是Q_CORE_EXPORTmacros,parsing为Q_DECL_IMPORT或Q_DECL_EXPORT 。 
  __declspec(dllimport)是一个存储类说明符,它告诉编译器在外部DLL中定义了函数或对象或数据types。 
 函数或对象或数据types是从DLL中导出的,具有相应的__declspec(dllexport) 。 
这意味着函数的定义是在一个dynamic库中。 有关更多详细信息和示例,请参阅文档 。