Похоже, что директория typemap не совсем здесь.Я думаю, что этого должно быть достаточно, чтобы исправить это в строке после вашей директивы %apply
:
%typemap(directorin) uint8_t *buffer "$input = $1;"
Приведенная выше таблица типов соответствует только неконстантным uint8_t*
параметрам с именем buffer
.Мы можем сделать это гораздо более универсальным, если захотим, например:
%typemap(directorin) SWIGTYPE * "$input = $1;"
Будет соответствовать любому, у которого нет лучшего соответствия, как константного, так и неконстантного.Я не могу понять, почему это не так, по умолчанию, так что здесь есть риск, что это может сломать что-то в другом месте, о чем я не думал, так что вы можете продолжить выборочно в тех случаях, когда это применяется ..
Вы также можете сделать что-то вроде:
%typemap(directorin) SWIGTYPE * "$input = ($1_ltype)$1;"
Или добавить другой вариант:
%typemap(directorin) const SWIGTYPE * "$input = const_cast<$1_ltype>($1);"