我得到了这个庞大的项目,其中包含许多带有dll文件定义的类。我需要提取该项目的一部分并从该部分创建一个新项目。我已经设法通过使用Visual Studio中的代码映射找到一些dll文件,但有些类没有显示在那里。
# ifdef FCBase
# define BaseExport __declspec(dllexport)
# else
# define BaseExport __declspec(dllimport)
# endif
class BaseExport Handled
{.
.
};
指定哪些dll文件链接到什么?
答案 0 :(得分:1)
指令__declspec(dllexport)
表示使用此指令声明的任何内容都将从DLL导出,以便在链接到该DLL的其他应用程序中使用。因此,在为将编译为DLL的代码编写头文件时,函数声明和类定义将使用此伪指令进行修饰。另一方面,使用这些函数和类的代码需要用__declspec(dllimport)
声明它们,让链接器知道它们将从DLL导入。
这两个指令通常由单个宏替换,根据项目设置解析为适当的值。这样,您可以在DLL实现文件和实现文件中包含相同的标头,以用于将使用此DLL的其他应用程序。例如,在您的情况下,DLL的项目将定义FCBase
,因此BaseExport
将在预处理步骤中解析为__declspec(dllexport)
。这表明该项目是用于DLL的实现。没有定义FCBase
的项目,这意味着项目正在从DLL导入函数类。