我正在开发一个项目(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();
但是,我是否应该导出该程序的所有功能?
答案 0 :(得分:0)
我是否应该导出该程序的所有功能?
通常在设计库的接口时,您应该只导出库的使用者所需的功能。
如果您导出了每个功能,那么您需要记录每个功能。但是,库消费者可能不需要许多功能。许多函数将是私有的库的实现。
更重要的是,通过导出所有功能,您将使图书馆的未来发展变得更加困难。如果要将接口更改为导出的其中一个私有函数,该怎么办?您必须要么引入另一个具有不同名称的函数,要么使用现有名称,以便打破二进制向后兼容性。这些选项都没有特别吸引人。
从本质上讲,图书馆公共界面的表面积越大,维护任务就越大。因此,您通常的目标是提供尽可能小的公共接口,为库消费者提供所需的功能。