Я не знаю Vala, но если вы можете вызывать нативный код, объявлять структуры C и передавать их как указатели на указанный нативный код, и определять функции, которые используют соглашения о вызовах C, это должно быть возможно. Но это, безусловно, будет проще сделать в C / C ++.
Изменить: его домашняя страница говорит
valac создает исходные и заголовочные файлы C из исходных файлов Vala, как если бы вы написали свою библиотеку или приложение непосредственно на C. Использование библиотеки Vala из приложения C не будет отличаться от использования любой другой библиотеки на основе GObject. Не будет библиотеки времени выполнения vala, и приложения смогут распространять сгенерированный код C со своими tar-архивами, поэтому для пользователей не требуется никаких дополнительных зависимостей времени выполнения или сборки.
Итак, хотя это не является окончательным, я бы сказал, что вы, вероятно, можете.