объекты понимать? чтобы можно было не только примитивы через ffi передавать а хотя бы еще Vec и HashMap например родные
думаю, так нельзя, т. к. у раста нет стабильного ABI
а альтернативные крейты? типа ArrayVec и там и там
Так низзя. Можно обернуть в #[repr(C)]-тип и определить на нём кучу свободных extern "C" функций
ну это работает да
если на них не повесить repr(C), нельзя
кстати это по логике получается если на расте собрать shared lib и передавать ему всякие векторы, то и либа и основная прога должны быть собраны одной версией компилятора желательно?
Лучше считать, что вызывать не-extern функции по FFI нельзя, точка.
насколько я знаю, вообще ничего не гарантировано, даже то, что на одной версии компилятора один и тот же ABI
При полном совпадении версий и настроек компилятора можно, процмакросы так работают
Как работают процмакросы — implementation detail
Обсуждают сегодня