[Visual 2005] C++ et framework 2.0

en quelques mots:

Je (enfin pas moi tout seul, mais osef) developpe une application en c++ sous visual 2005, elle marche. je met le binaire sur une autre machine et j ai le message d’erreur ci-dessous. les seules differences qui nous semblent importantes entre les deux machines: une est sous visual 2005 + .net2.0 et l autre 2003 + .net 1.1

les questions sont donc:

  • est ce que le compileur rajoute dans les binaires c++ des information/morceaux de code ayant besoin de ce framework

  • si oui: comment le forcer a ne pas les mettre

  • si non: d ou le probleme peut il venir ?

(si possible pas de « bah compile avec vs2003 », je souhaite comprendre le probleme, pas juste le contourner)

“en C++” …

Mmh, quel genre ? MFC ? Winforms ? ATL ?

Console ?

Si t’as pas fait de la compilation C++ managed/.Net aucune raison que ca ait qqch a voir avec .Net.

Rapidement, une piste : les DLL CRT 8.0 DOIVENT absolument être installées avec Windows installer ou alors avec le programme Visual C++ Redistribuables que tu peux trouver quelque part dans un répertoire WCU du cd d’installation de Visual 2005. On ne peux pas simplement copier les librairies avec l’éxécutable, cela ne marche pas à cause du side by side.

Plus d’infos sur la MSDN comme d’hab.

Pourrais-tu développer ce point, ou bien filer un lien vers des explications ?

lien msdn :
Visual C++ Libraries as Shared Side-by-Side Assemblies

En gros, tu fais un projet de déploiement Windows installer et tu rajoute le module CRT80.

Ce que tu dis concerne les DLL compilées pour le framework .Net 2.0 (quand tu vois assembly celà doit fair “tilt, c’est du .Net!”).
Si tu compiles tes lib / dll en natif, ca doit tourner sur n’importe quelle machin sans .Net 2 ni Visual Studio.

Arf autant pour moi… apres parcours rapide du lien… Ca parle bien d’ATL, MFC et tout… Pourquoi leur avoir donné le nom d’“Assemblies”? il me semblait que ce terme était spécifique à la plateforme .Net? non?

Je te rassure j’ai eu le même problème et je peux t’assurer que mon appli ne linke pas la moindre dll du .Net Framework.

Cela dit, le problème est le même pour ceux qui ont besoin de déboguer à distance, là, il faut installer les versions debug des dll. J’ai fait un fichier msi avec juste les modules nécessaires.

Juste une précision. Ces DLL ne sont nécessaires que si le programme est linké avec le runtime dynamique.

Si installer des dlls en sus de l’executable t’embète, il te faudra linker avec le runtime statique.

Dans la config du projet, dans C/C++ → Code génération, change l’option RunTime Library.

Si c’est un projet MFC, te faudra aussi linker aux libs MFCs statiques (dans General).

+1 avec Tzim, j’ai tellement l’habitude des projets multi-dll que j’avais oublié d’en parler.

C’est clair, y’a plus grand monde qui utilise la CRT en statique pour des gros projets. Ceci étant dit, je trouve ça un poil chiant de devoir désormais systématiquement passer par la case installation. Vous confirmez qu’on doit le faire même si on n’utilise pas le framework .net ?

Non mais non, ca n’a RIEN a voir avec .Net, ca n’a rien a voir avec vs2005 lui meme :P.

:stuck_out_tongue: Ca à avoir avec quoi alors ?

ah oui, j’ai raté plein de reponses. en fait le probleme ne se pose pas en mode release. donc … pas de probleme.

merci quand meme :stuck_out_tongue: