Pour les lib dynamiques C++ linkables avec celles produites par d'autres compilo, c'est sans doute une très mauvaise idée.
1. L'utilisation des classes templates changent d'un compilo à l'autre puisque ce n'est pas la même STL. Le link peut donc éventuellement bien se passer, mais la manipulation des objets (std::string par exemple) peut être catastrophique pour l'intégrité des données.
2. A moins d'une ABI C++ normalisée par un comité ANSI ou autre, comment être sûr d'une interopérabilité stable *et* durable ?
3. Plus encore que l'ABI, il faudrait que la représentation intrinsèque de l'objet (ie sa représentation en mémoire) soit la même. Donc même format de vtable, même codage des infos de typage dynamique, etc.
Bref, compliqué ! Notes d'ailleurs que même un compilateur comme MSVC est incompatible entre ses différentes versions, comme par exemple entre la version 6 et la version 7 (.NET). J'en garde d'assez mauvais souvenirs ! Alors l'interop entre des compilos différents, oublies !
[^] # Re: gcc = g++ gcc et gjc et libgcj ?
Posté par SoWhat . En réponse à la dépêche Sortie de GCC 4.0. Évalué à 5.
1. L'utilisation des classes templates changent d'un compilo à l'autre puisque ce n'est pas la même STL. Le link peut donc éventuellement bien se passer, mais la manipulation des objets (std::string par exemple) peut être catastrophique pour l'intégrité des données.
2. A moins d'une ABI C++ normalisée par un comité ANSI ou autre, comment être sûr d'une interopérabilité stable *et* durable ?
3. Plus encore que l'ABI, il faudrait que la représentation intrinsèque de l'objet (ie sa représentation en mémoire) soit la même. Donc même format de vtable, même codage des infos de typage dynamique, etc.
Bref, compliqué ! Notes d'ailleurs que même un compilateur comme MSVC est incompatible entre ses différentes versions, comme par exemple entre la version 6 et la version 7 (.NET). J'en garde d'assez mauvais souvenirs ! Alors l'interop entre des compilos différents, oublies !