我想编写一个库,该库将与在Windows,Linux和OS / X等现代操作系统上运行的其他程序动态链接(即它将部署为.dll
或.so
模块)。
在这种情况下,最合适的语言是什么?我应该坚持使用普通的C吗?或者C ++也可以吗?
答案 0 :(得分:14)
你可以使用C或C ++来实现,但我建议用纯C语言定义接口。集成起来会容易得多。
答案 1 :(得分:2)
创建以二进制形式分发的C ++库的困难在于,您的客户 - 库的用户 - 通常被限制为使用与创建库时相同的C ++编译器。如果您想要保持最新状态而不是最新状态,或者如果他们想要保持最新而您却不知道,这可能会有问题。如果您处理源代码,那么这不是一个问题,只要您的C ++足够便携,允许客户使用的所有编译器使用它。
如果可以从C使用代码,我可能会编写一个C接口。另外,提供两个接口 - 本机C ++接口和C接口。但这不仅仅是一个C接口。另一方面,C ++接口(可能使用STL迭代器等)可能会带来好处,这可能会影响您的决定。
答案 2 :(得分:1)
我还要说C是最低的共同点。如果与调用应用程序更好地集成,您总是可以选择将C ++包装器写入核心库。
答案 3 :(得分:0)
我认为C是最可预测的可移植性,但C ++是可行的。
答案 4 :(得分:0)
考虑最低公分母的因素,让图书馆的消费者做出最适合他们的决策。外部c的结构可能仍然让一些人感到困惑,你希望你的图书馆能够远行到达最广泛的观众。绝对要使接口纯净。如果你避免使用一些较暗的角(比如STL),C ++就可以了。 C是最便携的吧。为所有可用平台创建库并非易事,因此请务必查看here以获取一些提示。您可能还想考虑使用autoconf等。