Gildams
Messages postés4Date d'inscriptionjeudi 14 juin 2007StatutMembreDernière intervention24 mai 2008
-
2 mars 2008 à 23:11
cs_Chatbour
Messages postés764Date d'inscriptionjeudi 27 juillet 2006StatutMembreDerniè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 !
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013131 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
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 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.
Gildams
Messages postés4Date d'inscriptionjeudi 14 juin 2007StatutMembreDernière intervention24 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
Gildams
Messages postés4Date d'inscriptionjeudi 14 juin 2007StatutMembreDernière intervention24 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 !
Vous n’avez pas trouvé la réponse que vous recherchez ?
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 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.
sneakysimoun
Messages postés1Date d'inscriptionmercredi 18 avril 2007StatutMembreDernière intervention27 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.