假设我生成了一个新的标准 API。这个 API 由一堆 C 头文件组成,但没有实现。特定供应商负责实现我的接口,以便应用程序开发人员可以与他们的产品进行交互。使用接口的原因很简单:应用程序开发人员应该能够毫无困难地与不同的产品交互,因为所有产品都实现了我的接口。
行。现在到困难的事情上。实施我的 API 的供应商将如何实施 C 代码?我对这个问题的假设是供应商会简单地将我的头文件包含在他们的项目中并创建一个“导出”他们的实现函数的 .DLL。更重要的是,想要与我的 API 交互(但希望它与任何供应商的任何实现一起工作)的应用程序开发人员将如何编写他们的代码来利用这一点?
我读了这篇关于动态与加载时间链接的 SO 帖子。如果您知道要链接到的 .dll 的名称并且知道要在该 .dll 中调用的函数,则加载时间链接似乎很有用。但是,在我的场景中,应用程序开发人员是否不必动态链接到实现我的 API 中的功能的 .dll ?该应用程序开发人员如何知道实现我的 API 中的功能的 .dll 的名称是什么?
我希望我的困惑是有道理的。我来自学习如何用 C 编程的背景,但我们并没有在这些东西上做太多事情。根据我的回忆,我们编写了一堆头文件和 C 文件,然后我们对其进行编译和链接……它产生了一个可执行文件,其中包含该可执行文件中的所有代码。请帮助澄清我的误解。