Mélange de bibliothèques statiques de code C créées à partir de différentes versions de Visual Studio 2002 et ultérieur

StackOverflow https://stackoverflow.com/questions/462768

Question

J'ai une bibliothèque de liaisons statiques de routines C et Fortran compilées et liées entre elles à l'aide du compilateur Visual Studio 2002 C (v7.0) et du compilateur Intel Fortran 9.0.018.

Le code C de ma bibliothèque appelle et relie les bibliothèques statiques Microsoft C-RunTime (MSCRT) 2002 (à un seul thread). Je crois que le numéro de version actuel des bibliothèques CRT 2002 est la v7.0

Je me référerai à cette bibliothèque statique par "vs2002if9.lib"

Puis-je créer un lien statique vers mon " vs2002if9.lib " utiliser en toute sécurité une version ultérieure de Visual Studio (2003, 2005 ou 2008) sans se soucier de la façon dont le programme appelant se comporte en ce qui concerne les appels d'exécution C?

Ou est-ce que je crée des problèmes en mélangeant une version des librairies statiques CRT?

Et si je fournissais mon "vs2002if9.lib" aux développeurs de logiciels tiers? Quelles sont les exigences que je leur impose?

Était-ce utile?

La solution

Mélanger les runtimes C n'a pas fonctionné pour moi dans le passé. La seule manière dont je peux voir que cela fonctionne {peut-être} est si vous isolez complètement l'utilisation de la pile / du tas dans les limites du C-Runtime lié de manière statique [rien ne dépasse les limites via des paramètres mais quelle est la valeur de votre vs2009if9 .lib fournissant].

Par exemple, si vous souhaitez allouer un pointeur [mémoire heap] dans l'application et le transmettre à la bibliothèque que vous avez fournie, quel gestionnaire de tas doit être utilisé? La réponse correcte est le gestionnaire de tas qui gère le pointeur, mais votre bibliothèque ne saura rien de l'autre gestionnaire de tas. Cela devient plus laid si votre bibliothèque alloue de la mémoire à l'application et qu'il incombe à ces dernières de libérer / supprimer en utilisant le pointeur fourni (mauvaise conception oui mais toujours possible). Encore une fois, le mauvais gestionnaire de tas sera utilisé.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top