我正在进行一个项目(VS 2012解决方案),其中包括joystic.cpp
。项目已创建为DLL,以便能够从另一个项目调用库。该应用程序通过对话框计时器以独占模式接收即时操纵手柄数据,并将其显示在对话框中。
我用宏编辑了resource.h
文件:
#ifdef LIBRARY_EXPORTS
# define LIBRARY_API __declspec(dllexport)
#else
# define LIBRARY_API __declspec(dllimport)
#endif
以便能够通过订购导出功能:
LIBRARY_API function();
但是,我应该导出程序的所有功能吗?
是否应该导出程序的所有函数?
通常,在设计库的接口时,应该只导出库的使用者所需的函数。
如果导出了每个函数,则需要对每个函数进行文档记录。但是,库使用者可能不需要许多函数。许多功能对于图书馆的实施是私有的。
更重要的是,通过导出所有函数,您将使库的未来开发更加困难。如果您想将接口更改为导出的其中一个专用函数,该怎么办?您必须引入另一个具有不同名称的函数,或者使用现有名称,从而破坏二进制向后兼容性。这两种选择都没有特别的吸引力。
从本质上讲,图书馆公共界面的表面积越大,维护任务就越大。因此,您通常的目标是提供尽可能小的公共接口,为库使用者提供所需的功能。