В вашем коде C нет прототипа для plugin_get_config_string
.Таким образом, компилятор делает вывод, что тип возвращаемого значения int
.Когда это int
затем присваивается переменной char *
, int
расширяется до знака, потому что char *
больше, чем int
на вашей целевой платформе.
Применяется та же причинак параметрам функции: они неявно определены как int
, так что ваши указатели, приходящие из C, будут усечены, а аргументы могут быть в неправильном месте из-за несоответствия размера.
Чтобы это исправить, выдолжен объявить прототип так:
const char *plugin_get_config_string(const void *config, const char *k);