Il debe ne sera pas un problème. Chaque bibliothèque est liée à son propre runtime et fonctionne en grande partie indépendamment des autres bibliothèques du processus. Le problème survient lorsque l'ABI des bibliothèques est mal définie. Si un objet alloué au tas est alloué dans une bibliothèque, passé à travers une frontière de bibliothèque et "libéré" dans une autre bibliothèque, il y aura des problèmes car un gestionnaire de tas différent de celui utilisé pour l'allouer est utilisé pour libérer un bloc.
Tout type de structure, d'objet ou d'entité défini par c-runtime ne doit pas être transmis au-delà des frontières où une version différente du runtime pourrait être utilisée : les FILE* obtenus à partir d'une bibliothèque par exemple n'auront aucune signification pour une bibliothèque différente liée à un runtime différent.
Tant que l'API de la bibliothèque n'utilise que des types bruts, et n'essaie pas de libérer() des pointeurs transmis, ou de transmettre des pointeurs à la mémoire malloc() interne qu'ils attendent que l'application (ou une autre bibliothèque) libère(), tout devrait bien se passer.
Il est facile de tomber dans le piège du FUD selon lequel "tout peut mal tourner" si les temps d'exécution c sont mélangés, mais il faut se rappeler que les librairies et les bibliothèques dynamiques (.so / .dll / .dylib) ont traditionnellement été développées dans une grande variété de langages : permettant au code écrit en asm, c, c++, fortran, pascal etc. de communiquer via une interface binaire efficace pour le CPU.
Pourquoi paniquer soudainement quand C est lié à C ?