Compilation sous MFC

[Résolu]
Signaler
Messages postés
4
Date d'inscription
jeudi 14 juin 2007
Statut
Membre
Dernière intervention
24 mai 2008
-
Messages postés
764
Date d'inscription
jeudi 27 juillet 2006
Statut
Membre
Dernière intervention
6 septembre 2010
-
Bonjour a tous,
Je suis débutant en c++ et donc j'ai une question bête, alors soyez indulgeant.
Lorsque je fait un code sous visual c++6 en choisissant "MFC AppWizard (exe)", ils fonctionnent très bien sur ma machine, malheureusement sur d'autres ordinateurs le mesage d'erreur suivant apparait "L'ordinal 5077 est introuvable dans la bibliothèques dynamique MFC42D.DLL" . Je pourrais utiliser "Win32 Application" et là sa fonction sur d'autres PC. Ben oui, mais il manque pas mal de ressource dans ce dernier cas. Le but de compiler un programme, c'est qu'il soit directement executable n'importe où, alors pourquoi avoir mis tant de ressources dans les MFC et de ne pas pouvoir les utiliser une fois compilé, il y a surement une raison et une solution, sinon je vais être contraint de retourner sur Amiga et de programmer en Amos ! En tout cas si quelqu'un a une solution, merci c'est chouette !

9 réponses

Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
124
Salut,

C'est tout simplement qu'en MFC, tu as besoin de plusieurs librairie annexes pour que ton programme puisse fonctionner. Tout comme en VB, VB.NET, C#, et autre !

Alors soit tu fait du pur Win32 voir de l'ASM (bien plus long à programmer, mais au moins tu sais ce que tu fait et de quoi tu dépend), soit tu fait de la programmation plus assistée (c++ avec MFC, C++ avec QT, java) et tu prévois un installateur pour distribuer ton programme...
______________________________________
DarK Sidious
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
29
Avec l'antique VC6, nul besoin d'installeur, les vieilles MFC42 sont livrées avec tous les Windows, Win Server 2008 x64 y compris. Par contre ce que t'a dit Dark reste valable dès que tu auras un VC++ plus récent, si donc tu veux pouvoir distribuer un exe seul, il faut obligatoirement se passer de toute surcouche.

Pour ce qui est du cas présent, compile en RELEASE et devrait aller.
On ne livre JAMAIS une version debug.
Messages postés
4
Date d'inscription
jeudi 14 juin 2007
Statut
Membre
Dernière intervention
24 mai 2008

Merci  pour ta réponse, donc si je te comprend bien impossible d'inclure tout ce qui met utile en MFC dans l'executable,
donc il faut placer les dll MFC avec l'executable et certainement mettre la base de registre a jour (j'ai testé les dlls ne suffisent pas !!!)
Merci de ton aide, je vais donc me concentrer sur le win32 et laisser tomber les MFC, snif...Bonne programmation a tous


 
Messages postés
4
Date d'inscription
jeudi 14 juin 2007
Statut
Membre
Dernière intervention
24 mai 2008

Ok, c'est genial sa fonctionne, ouf je vais pouvoir garder mes codes en MFC,
effectivement en compilant en release sa fonctionne très bien, tout s'explique. Merci beaucoup !
Messages postés
764
Date d'inscription
jeudi 27 juillet 2006
Statut
Membre
Dernière intervention
6 septembre 2010
18
Salut à tous

permettez moi de poser cette question : qu'est-ce que c'est la différence entre Release et Debug ?

Merci d'avance..
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
29
L'exe contient des infos pour être lancé en mode debug et est lié à des fonctions qui ne sont présentes que dans les versions debug des DLLs, celles qui ne doivent se trouver que sur un PC de dev, pas chez le client.

ciao...
BruNews, MVP VC++
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
124
Salut,

Sans compter que les versions debug sont bien plus lentes que les versions release !
______________________________________
DarK Sidious
Messages postés
1
Date d'inscription
mercredi 18 avril 2007
Statut
Membre
Dernière intervention
27 mars 2008

Release ou Debug (même si en effet on ne distribue jamais un projet compilé en mode Debug!), il suffit de lier les MFC statiquement (cf options de projet) pour pouvoir distribuer son executable sur n'importe quel Windows. Ainsi le code des MFC est directement inclus et compilé avec ton programme. L'inconvénient est que ta DLL aura une très grande taille.
En résumé, compiler en mode Debug en liant la MFC dynamiquement (puisque pour débugger sur ton Visual, tu as forcément les dlls MFC à dispo!), et compiler en mode Release en liant statiquement la MFC pour ne pas avoir à distribuer les dlls MFC avec son exe. D'ailleurs c'est sûrement défini comme ça dans tes options de projet pour que ça marche lorsque tu compiles en Release.

Salute!
Messages postés
764
Date d'inscription
jeudi 27 juillet 2006
Statut
Membre
Dernière intervention
6 septembre 2010
18
Merci pour les réponses