Связывание с библиотекой c++, имеющей функции extern" C
поэтому я пишу Rust FFI в библиотеку C++, в которой есть блок extern "C" с заголовками функций C-style. И мой низкоуровневый FFI строит.
однако, когда я использую свой FFI в другом проекте, он не связывается должным образом, и я получаю неопределенную ссылку на оператор new (), delete () и т. д.
мой вопрос:
я облажался, потому что это C++ , и Вы еще не можете связать Rust с C++?
Если приложение, потребляющее библиотеку FFI, как-то справляется с проблемой связывания, и если да, то как?
мой libsomething.a как-то встроить эти компоненты C++, и если да, то как? В настоящее время я использую ящик gcc довольно обобщенно.
поместить свое собственное решение
1 ответов
вам нужно динамически ссылаться на libstdc++
получить символы кода C++ понадобится. Вы можете проинструктировать rustc
чтобы сделать это в вашем скрипте сборки:
extern crate gcc;
use std::default::Default;
fn main() {
gcc::compile_library("libhello.a", &Default::default(), &["cpp/hello.cpp"]);
println!("cargo:rustc-flags=-l dylib=stdc++");
}
для получения дополнительной информации о сценариях сборки см. грузовой руководство.