CLR has an approach for that by defining what is known as CLS, Common Language Subsystem.
Likewise they have a similar approach on WinRT, known as Type Providers.
However they also have their impedance mismatches, as you are only allowed to use types that are usable by all languages that target such runtimes.
The benefit is that they still allow for an higher level of code abstractions than pure C functions.
CLR has an approach for that by defining what is known as CLS, Common Language Subsystem.
Likewise they have a similar approach on WinRT, known as Type Providers.
However they also have their impedance mismatches, as you are only allowed to use types that are usable by all languages that target such runtimes.
The benefit is that they still allow for an higher level of code abstractions than pure C functions.