Конфликт времени выполнения библиотеки Openvino в грузовой рабочей областиC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Конфликт времени выполнения библиотеки Openvino в грузовой рабочей области

Сообщение Anonymous »

Я думаю, что в моем рабочем пространстве для грузов происходит конфликт компоновщика.
Некоторый контекст:
Мое рабочее пространство состоит из 3 ящиков:
< ул>
[*]: Крейт Rust, вызывающий приложение C++ через ffi
[*]

Код: Выделить всё

engine_rs
: полный порт из вышеперечисленного на ржавчину.
[*]

Код: Выделить всё

ffi_test
: Создать ящик для сравнения результатов, полученных выше.

Код: Выделить всё

engine_rs
использует opencv-rs и openvino-rs последних версий. В коде C++ используется система opencv и более старая версия openvino. У меня есть общие объектные файлы для этой версии openvino локально внутри этого ящика в папке {cmake_src_dir}/external/openvino/lib
In ffi_test, когда я запускаю тест отдельно, комментируя код для каждого движка, он работает :thumbsup_tone1: .
Проблема возникает, когда я запускаю оба движка одновременно, и мне нужно сделать это, чтобы сравнить результаты:

Код: Выделить всё

Error: openvino_finder: OpenVINO version is too old (see https://github.com/intel/openvino-rs/issues/143): 2022.1.0-7019-cdb9bec7210-releases/2022/1")
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
test rs_engine_test ... FAILED
test cpp_engine_test ... ok
Rust engine_rs пытается использовать более старую библиотеку openvino, которая входит в кейт движка, хотя они представляют собой отдельные кейты.
У меня есть openvino-rs с включенным связыванием во время выполнения. Это самое большое расстояние, которое я смог получить build.rs:

Код: Выделить всё

#[cfg(all(target_os = "linux", target_arch = "x86_64"))]
fn linux_x86_64_main() {
let cpp_engine = cmake::Config::new("./engine")
.no_build_target(true) // Skip `make install`
.build();

println!("cargo:warning=engine output:{}", cpp_engine.display());
println!("cargo:rustc-link-search={}/build", cpp_engine.display());
println!("cargo:rustc-link-lib=engine");

println!("cargo:rustc-link-search=native=fid_engine/engine/external/openvino/lib");
println!("cargo:rustc-link-lib=dylib=openvino");
println!("cargo:rustc-link-lib=dylib=tbb");

println!("cargo:rerun-if-changed=engine/CMakeLists.txt");
}

Код: Выделить всё

engine_rs
build.rs:

Код: Выделить всё

#[cfg(all(target_os = "linux", target_arch = "x86_64"))]
fn linux_x86_64_main() {
println!("cargo:rustc-link-search=native=/usr/lib");
println!("cargo:rustc-link-lib=openvino_c");
println!("cargo:rustc-link-lib=openvino");
println!("cargo:rustc-link-lib=tbb");
println!("cargo:rustc-link-lib=opencv_core");
println!("cargo:rustc-link-lib=opencv_dnn");
println!("cargo:rustc-link-lib=opencv_imgproc");
println!("cargo:rustc-link-lib=opencv_imgcodecs");
}
Мне нужно запустить оба механизма в одном тесте, чтобы я мог сравнить результаты. Как мне продолжить?


Подробнее здесь: https://stackoverflow.com/questions/791 ... -workspace
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»