Ошибка связывания в ржавчине bindgen
Итак, у меня есть библиотека заголовков (каталог файлов.h), которую мне нужно использовать в моем коде ржавчины. Чтобы заставить эту работу работать, я искал различные ящики, чтобы помочь мне добиться этого, и, похоже, bindgen - самый многообещающий вариант. Я следил за документацией по bindgen и создал файлы wrapper.h и build.rs. в файле build.rs я внес в белый список все необходимые функции, а параметр ссылки, упомянутый в документации, указан какprintln! ("cargo:rustc-link-lib=C/complete path to my header files");
. однако при сборке груза это не удается с этой ошибкой:
error: linking with link.exe failed: exit code: 1181
для которой я не смог найти решения. Любая помощь или предложения приветствуются.
1 ответ
rustc-link-lib
директива предназначена только для .a
/.so
/.dll
и не может работать ни с одним .h
или .rs
файлы. Здесь совершенно неуместно.
Если вы сделаете свой build.rs
скрипт записывает в каталог, указанный std::env::var("OUT_DIR")
path, то код вашей основной библиотеки может включать его динамически с помощью:
include!(concat!(env!("OUT_DIR"), "/temp_file_built_by_build_dot_rs.rs"));
В качестве альтернативы, не беспокойтесь о build.rs
вообще. Используйте bindgen из командной строки и включите сгенерированный.rs
файл как модуль в вашем проекте (как обычный файл исходного кода).