找到关联的dll文件到__declspec(dllexport)

时间:2015-11-17 11:01:57

标签: c++ dllimport dllexport declspec

我得到了这个庞大的项目,其中包含许多带有dll文件定义的类。我需要提取该项目的一部分并从该部分创建一个新项目。我已经设法通过使用Visual Studio中的代码映射找到一些dll文件,但有些类没有显示在那里。

#   ifdef FCBase
#       define BaseExport  __declspec(dllexport)
#   else
#       define BaseExport  __declspec(dllimport)
#   endif

class BaseExport Handled
{.
 .
};

指定哪些dll文件链接到什么?

1 个答案:

答案 0 :(得分:1)

指令__declspec(dllexport)表示使用此指令声明的任何内容都将从DLL导出,以便在链接到该DLL的其他应用程序中使用。因此,在为将编译为DLL的代码编写头文件时,函数声明和类定义将使用此伪指令进行修饰。另一方面,使用这些函数和类的代码需要用__declspec(dllimport)声明它们,让链接器知道它们将从DLL导入。

这两个指令通常由单个宏替换,根据项目设置解析为适当的值。这样,您可以在DLL实现文件和实现文件中包含相同的标头,以用于将使用此DLL的其他应用程序。例如,在您的情况下,DLL的项目将定义FCBase,因此BaseExport将在预处理步骤中解析为__declspec(dllexport)。这表明该项目是用于DLL的实现。没有定义FCBase的项目,这意味着项目正在从DLL导入函数类。