2009-06-22 199 views
4

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

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

回答

14

您可以使用C或C++进行实现,但我会建议在纯C中定义接口。它将更容易集成。

+0

也让人们消费图书馆的自由选择最适合他们的东西。 – ojblass 2009-06-22 01:12:21

+0

是的。很少有人反对OpenGL ES直C界面的想法。但是Objective-C程序员可能根本不会挖掘C++接口。 – Nosredna 2009-06-22 01:14:10

0

我会说C是最可预测的便携式,但C++是可行的。

1

我也会说C是最低公分母。如果与调用应用程序更好地集成,您总是可以选择将C++包装器编写到核心库。

0

考虑最低公分母的因素,让图书馆的消费者做出最适合他们的决定。 extern c的构造可能仍然会让一些人感到困惑,并且你希望你的图书馆能够远距离接触最广泛的受众。绝对使界面纯粹c。如果您避免使用一些较暗的角落(如STL),则可以使用C++。 C是最便携的酒吧没有。为所有可用的平台创建库不是一件容易的事,因此请务必查看here以获取一些提示。你可能也想考虑使用autoconf等。

2

创建以二进制形式分发的C++库的难度在于,您的客户 - 库的用户 - 通常被限制为使用与创建库相同的C++编译器。如果你想保持最新,他们没有,或者如果他们想保持最新,而你不想,那么这可能会有问题。如果您使用源代码进行交易,那么只要您的C++具有足够的可移植性,以便它可供您的客户使用的所有编译器使用,就不会有问题。

如果代码可能来自C,我可能会编码到C接口。或者,提供两个接口 - 本地C++接口和C接口。但是,这不仅仅是一个C接口。另一方面,C++接口(也许使用STL迭代器等)可能会带来好处,并可能影响您的决定。