如何将C库自动包装成C++

问题描述 投票:0回答:1

LVGL 库看起来很有前途,但它是基于 C 的。 有没有一种方法可以自动将其包装到 C++ 现代界面中,或者至少在每个新版本中进行最少的修改?

在javascript世界中,react有一个叫做react-reconciler的机制来自动包装库,那么C到C++有类似的东西吗?

c++ reactjs c wrapper
1个回答
0
投票

大多数时候,您可以通过包含 C 头文件来使用 C 库。如果标题本身还没有,您可能需要在包含周围添加

extern "C" {}

但是,如果您的意思是使用 std::uniq_ptr、std::shared_ptr、std::vector 等将接口更新为现代 C++ 标准,那么您就不走运了。这些类型和 C 类型之间的更改不能简单地自动化,因为它们为接口添加了 C 中根本不存在的含义,无法从标头中推断出它。

另一方面,库界面不太可能改变。至少不多。通常,未来的版本应该只添加内容,其他任何内容都需要更改 SONAME,并且至少需要针对新库重新编译所有软件。因此,如果您无法忍受 C 接口,您只需编写一次包装器,然后只需进行少量更新即可。

© www.soinside.com 2019 - 2024. All rights reserved.