Compilation sous MFC

Résolu
Gildams Messages postés 4 Date d'inscription jeudi 14 juin 2007 Statut Membre Dernière intervention 24 mai 2008 - 2 mars 2008 à 23:11
cs_Chatbour Messages postés 764 Date d'inscription jeudi 27 juillet 2006 Statut Membre Dernière intervention 6 septembre 2010 - 27 mars 2008 à 18:34
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

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
3 mars 2008 à 07:22
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
3
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
3 mars 2008 à 11:30
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.
3
Gildams Messages postés 4 Date d'inscription jeudi 14 juin 2007 Statut Membre Dernière intervention 24 mai 2008
3 mars 2008 à 09:35
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


 
0
Gildams Messages postés 4 Date d'inscription jeudi 14 juin 2007 Statut Membre Dernière intervention 24 mai 2008
3 mars 2008 à 15:38
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 !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Chatbour Messages postés 764 Date d'inscription jeudi 27 juillet 2006 Statut Membre Dernière intervention 6 septembre 2010 19
3 mars 2008 à 17:48
Salut à tous

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

Merci d'avance..
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
3 mars 2008 à 18:39
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++
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
3 mars 2008 à 19:41
Salut,

Sans compter que les versions debug sont bien plus lentes que les versions release !
______________________________________
DarK Sidious
0
sneakysimoun Messages postés 1 Date d'inscription mercredi 18 avril 2007 Statut Membre Dernière intervention 27 mars 2008
27 mars 2008 à 09:57
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!
0
cs_Chatbour Messages postés 764 Date d'inscription jeudi 27 juillet 2006 Statut Membre Dernière intervention 6 septembre 2010 19
27 mars 2008 à 18:34
Merci pour les réponses
0
Rejoignez-nous