我正在用rust编写一个程序,该程序链接到c ++库,但是rust无法生成与虚拟函数的绑定。虽然可能有更好的方法,但是最直接的解决方案是编写一个额外的抽象层,我可以生成该抽象层的绑定。
我的c ++功能有些欠缺,所以我想知道是否有一个可以快速为原始函数生成包装器的库。
create() -> ptr
函数以及大约40个虚函数的类。.so
。我无权访问原始来源。class tPower
{
public:
tPower(){}
virtual ~tPower(){}
virtual tSystemInterface* getSystemInterface() = 0;
static tPower* create(tRioStatusCode *status);
virtual void writeDisable(tDisable value, tRioStatusCode *status) = 0;
virtual void writeDisable_User3V3(bool value, tRioStatusCode *status) = 0;
virtual void writeDisable_User5V(bool value, tRioStatusCode *status) = 0;
virtual void writeDisable_User6V(bool value, tRioStatusCode *status) = 0;
virtual tDisable readDisable(tRioStatusCode *status) = 0;
virtual bool readDisable_User3V3(tRioStatusCode *status) = 0;
virtual bool readDisable_User5V(tRioStatusCode *status) = 0;
virtual bool readDisable_User6V(tRioStatusCode *status) = 0;
// This goes on for another 30 or so functions plus the typedef for types referenced.
// There are no generics or any other language features used in these files.
编辑:我没有用rust
标记这个问题,因为已经出现了好几次了,结论几乎总是用c ++编写包装。我的问题更多地与我如何能够自动化该过程有关,因此我不必花几个小时来编写重复的代码。