Да. Несколько лет назад я написал небольшую простую демонстрацию, чтобы доказать это. Было две библиотеки DLL, одна написана на C ++, а другая на Ada. Они просто добавили константы к значениям с плавающей точкой. Два приложения, одно на C ++ и одно на Ada, каждое использовало обе библиотеки DLL. Таким образом, существовала любая возможная комбинация вызова / вызова C ++ из Ada. Все работало нормально. Это было для Windows, какая бы версия не была текущей в то время; Я не помню, но, возможно, это работало на Linux или BeOS.
Теперь, если бы я только мог найти исходный код этого ...