Да, это очень легко сделать. Все, что вам нужно сделать, это представить некоторые функции C ++ как "extern C", чтобы их могли вызывать обработчики событий и обратные вызовы в вашем коде пользовательского интерфейса.
В случае, если вы не можете изменить существующий источник C ++ - нет проблем. просто напишите C ++ shim для вашего пользовательского интерфейса, extern этих функций и оттуда вызовите бэкэнд-функции.