我想编写一个库,该库将与在Windows,Linux和OS / X等现代操作系统上运行的其他程序动态链接(即它将部署为 .dll .so 模块)。

在这种情况下,最合适的语言是什么?我应该坚持使用普通的C吗?或者C ++也可以吗?

有帮助吗?

解决方案

你可以使用C或C ++来实现,但我建议用纯C语言定义接口。集成起来会容易得多。

其他提示

创建以二进制形式分发的C ++库的困难在于,您的客户 - 库的用户 - 通常被限制为使用与创建库时相同的C ++编译器。如果您想要保持最新状态而不是最新状态,或者如果他们想要保持最新而您却不知道,这可能会有问题。如果您处理源代码,那么这不是一个问题,只要您的C ++足够便携,允许客户使用的所有编译器使用它。

如果可以从C使用代码,我可能会编写一个C接口。另外,提供两个接口 - 本机C ++接口和C接口。但这不仅仅是一个C接口。另一方面,C ++接口(可能使用STL迭代器等)可能会带来好处,这可能会影响您的决定。

我还会说C是最低的共同点。如果与调用应用程序更好地集成,您总是可以选择将C ++包装器写入核心库。

我认为C是最可预测的可移植性,但C ++是可行的。

考虑最低公分母的因素,让图书馆的消费者做出最适合他们的决策。外部c的结构可能仍然让一些人感到困惑,你希望你的图书馆能够远行到达最广泛的观众。绝对要使接口纯净。如果你避免使用一些较暗的角(比如STL),C ++就可以了。 C是最便携的吧。为所有可用平台创建库不是一件小事,所以一定要看看这里提供一些提示。您可能还想考虑使用autoconf等。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top