Как стать автором
Обновить

Комментарии 3

строки одним методом конвертируются в *mut c_uchar

И конвертируются неправильно. Учитывая, что длины строковых параметров нигде не передаются, функция почти наверняка ожидает нуль-терминированные строки в качестве строковых параметров, а строки в Rust таковыми не являются.


let mut dbg_data: Vec<c_uchar> = Vec::from([0;300]);

И где гарантия, что 300 байтов хватит для каких бы то ни было целей?


Ещё: почему вы заводите safe_result только для того, чтобы присвоить в неё значение result?


И откуда вы вообще взяли эту библиотеку? Поиск в Google по запросу "libPanoMaker" находит только эту статью, а запрос "Xphase Pro PanoMaker" выдаёт какие-то нерелевантные результаты.

а строки в Rust таковыми не являются.

именно поэтому там и передаётся длина вторым параметром.

И конвертируются неправильно. Учитывая, что длины строковых параметров нигде не передаются, функция почти наверняка ожидает нуль-терминированные строки в качестве строковых параметров, а строки в Rust таковыми не являются.

Вы правы, в интернетах пишут, что правильный путь - это использование CString и CStr, которые нуль-терминированы, честно говоря, я теперь удивлен, что у меня все заработало.

И где гарантия, что 300 байтов хватит для каких бы то ни было целей?

Об этом я не упомянул, в документации сказано, что этот параметр должен быть не менее 256 байт.

Ещё: почему вы заводите safe_result только для того, чтобы присвоить в неё значение result?

Изначально я это сделал потому, что result хранит значение внутри unsafe блока, а результат растовской функции мне хотелось возвращать из safe блока. Доступа к result снаружи unsafe не будет - другая область видимости. Можно переписать это вот так

let safe_result: i32 = unsafe {
  <...>
  let result: c_int = ProMakePanoramaBuf( <...> );
  <...>
  result
};

И откуда вы вообще взяли эту библиотеку? Поиск в Google по запросу "libPanoMaker" находит только эту статью, а запрос "Xphase Pro PanoMaker" выдаёт какие-то нерелевантные результаты.

Ну, я в последнем же абзаце об этом и написал, это очень сложно гуглится, что является лучшей антирекламой этой камеры. А так, вот.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории