【问题标题】:How do I call a C++ constructor via Rust FFI?如何通过 Rust FFI 调用 C++ 构造函数?
【发布时间】:2018-01-14 08:24:20
【问题描述】:

我试图通过 FFI 在 Rust 中使用“xerces-c”但没有成功。在 C++ 中,我会编写以下代码来使用它:

XMLPlatformUtils::Initialize();
{
  XercesDOMParser domParser;
  ParserErrorHandler parserErrorHandler;

  domParser.setErrorHandler(&parserErrorHandler);
  domParser.setDoSchema(true);
  domParser.setValidationSchemaFullChecking(true);

  domParser.parse(xmlFilePath.c_str());
  if(domParser.getErrorCount() != 0) {     
     // ...
  }
}
XMLPlatformUtils::Terminate();

如何在 Rust 中使用这些“复杂”的数据类型?我发现了许多导出/创建 FFI 以在其他语言中使用它的示例,但没有一个示例可以在 Rust 中使用复杂类型。

extern crate libc;

#[link(name = "xerces-c")]
extern {
    // How do i have to implement the constructor here? 
}

【问题讨论】:

    标签: c++ rust ffi


    【解决方案1】:

    Rust 不支持 C++ 的 FFI。如果你想使用这个库,你必须找到或编写一个为库提供纯 C 接口的翻译层,然后绑定到 that

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-28
      • 1970-01-01
      • 2012-06-17
      • 2012-09-23
      • 2021-10-31
      • 2015-10-06
      相关资源
      最近更新 更多