从dll中导出一小组方法?

时间:2014-05-23 23:05:27

标签: visual-studio-2010 winapi dll dllexport

我的软件有很多子项目都是内置到dll中的,并且许多方法都会被导出,因为它们将被其他依赖项目使用。我们现在需要将多个dll中的一些功能作为API暴露给不同的项目,与dll上所有当前导出的方法相比,这些API是非常小的子集。向外界提供最小的API集合的最佳方法是什么?

我想,如果我们提供单独的.h文件集,只有很少的导出公共方法,那么这个最小集只能被外界使用,对吗?这是标准做法吗?还有更好的选择吗?

源代码在C ++,VS2010,windows平台中。

2 个答案:

答案 0 :(得分:2)

导出的功能已暴露给外界。为什么你不能让违规项目使用每个DLL所需的部分?

如果你真的想要公开一个较小的API,我建议创建一个依赖于其他DLL的新DLL,并且只公开你想要暴露的函数。您仍然需要分发这些DLL,但项目不会直接链接到它们,而是链接到较小的DLL。

答案 1 :(得分:1)

除了@RemyLebeau所说的,如果您打算保持最新并且愿意将额外的工作放在同步中,那么只创建一个单独的API。

在安全性方面,已经提到过,如果DLL导出符号,那么它们可以很容易地被其他程序调用,因此从这个意义上讲,提供子集不会增加安全性。

这意味着创建公共API的选择取决于用户的便利性和需求,而不是技术问题。公开子集可以向用户强烈暗示要使用哪些方法。这些问题与必须维护额外API的成本相权衡。