IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

VC++ .NET Discussion :

Compilation /MD /MT dans VS 2005


Sujet :

VC++ .NET

  1. #1
    Membre confirm�
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    222
    D�tails du profil
    Informations personnelles :
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 222
    Par d�faut Compilation /MD /MT dans VS 2005
    Bonjour,

    Un projet existant sous VS 2003 �tait compil� avec l'option /MT (car il g�re plusieurs threads)

    J'ai retravaill� sur cette application, notament pour y ajouter une prise en charge de Web Service (automatique avec sproxy), j'ai donc �t� oblig� d'ajouter /clr pour la compilation.

    Hors, /clr m'interdit d'utiliser /MT j'ai donc utilis� /MD ...mais je n'en connais pas la diff�rence.
    La compilation se passe bien, mais j'ai quelques comportement diff�rents entre les deux versions..

    Quelles sont les cons�quences d'une compilation avec /MD par rapport � /MT ?

  2. #2
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    /MT : Liaison statique avec la C Run-Time library : Un gros ex�cutable, ind�pendant de MSVCRT/MSVCR71/MSVCR80.DLL. Par contre, risque de probl�mes si tu utilises des DLLs.

    /MD : Utilise la DLL pour la C Run-Time library : Un ex�cutable plus petit, mais qui a besoin d'avoir la bonne version de la DLL (voire plus, pour la version 8)sur le PC de destination. Mais normalement, pas de probl�me avec les autres DLLs, car il me semble qu'une DLL est obligatoirement compil�e en /MD.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre confirm�
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    222
    D�tails du profil
    Informations personnelles :
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 222
    Par d�faut
    Ok...

    Ok, le soucis, c'est qu'apparement, on ne peut pas faire cohabiter /MT et /clr.
    Hors quand je compile en /MD, mon programme un comportement bizarre...plus quelques erreurs au lancement de programmes connexes :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    System.IO.__Error.WinIOError(...)  C:\(...)\Local Settings\Temp\(nomaleatoire).dll introuvable...
    Comme je ne comprends pas r�ellement les diff�rences de comportement entre un exe en /MT et en /MD, je ne comprends pas d'ou viennent les erreurs....

  4. #4
    Membre confirm�
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    222
    D�tails du profil
    Informations personnelles :
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 222
    Par d�faut
    Donc ma question :

    Si je veux un gros ex�cutable avec tout dedans (parceque je ne vois pas comment g�n�rer de DLLs) et pouvoir utiliser les fonctions CLR, comment puis-je faire ?

  5. #5
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    Il n'est pas question ici de g�n�rer des DLLs, mais d'utiliser une DLL d�j� fournie par Microsoft.

    Et le .Net ne permet pas de lier statiquement � la CRT, tu n'as donc pas le choix: Tu dois compiler en /MD et garder � l'esprit que tu dois avoir � port�e de main la DLL de la CRT...
    (pour VS2003, elle doit s'appeler MSVCR71.DLL, et la biblioth�que standard C++ est MSVCP71.DLL)
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  6. #6
    Membre confirm�
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    222
    D�tails du profil
    Informations personnelles :
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 222
    Par d�faut
    Je compile avec VS2005 :

    Sur mon poste client, j'ai bien msvcr80.dll dans C:\Windows\WinSxS\x86_Microsoft.VC80.CRT_(caractere aleatoire)
    � plusieurs endroits (caract�re al�atoire diff�rent)

    par contre, j'ai la msvcr7.1.dll dans System32 et dans le dossier du framework .NET 1.1 , et bizarrement pas dans le .NET 2.0

    Faut-il que j'en mette une copie � cot� de mon exe., ou dans System32 ou cela suffit-il ?

  7. #7
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    Pour VS2005, C'est MSVCR80.DLL.

    Dans ma version pro, j'ai un dossier Redist, qui contient un dossier Microsoft.VC80.CRT, lequel renferme tous les fichiers n�cessaires (des DLL et un manifest).
    Normalement, une copie du dossier avec l'exe suffit.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  8. #8
    Membre confirm�
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    222
    D�tails du profil
    Informations personnelles :
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 222
    Par d�faut
    Qd je g�n�re mon .exe, je n'ai qu'un .exe qui se cr�e dans le dossier bin/

    Sans doute existe-t-il une option de compilation pour g�n�rer les redist...


    Sinon, j'ai install� "vcredist_x86-sp1.exe" sur mon poste client apr�s avoir lu que ca pouvait servir pour faire fonctionner les programmes....peut �tre que ca n'est pas la bonne version...

  9. #9
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    Euh...
    On ne cr�e pas les redist... Ils ont �t�s cr��s une bonne fois pour toutes par Billou et ses amis...

    Mais pour commencer, tu as essay� ton programme /clr /MD sur ton poste client ?
    Il compile ?
    Il linke ?
    Il tourne ?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  10. #10
    Membre confirm�
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    222
    D�tails du profil
    Informations personnelles :
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 222
    Par d�faut
    Ok, j'ai trouv� le dossier redist de VC8 "VC\redist\x86\Microsoft.VC80.CRT" , j'ai copi� tout ce qui il avait dedans � cot� de mon exe...

    Wait n See


    Toujours l'erreur du premier post.... (alors qu'elle n'arrive pas qd je compile avec MT et sans /clr )

  11. #11
    Membre confirm�
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    222
    D�tails du profil
    Informations personnelles :
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 222
    Par d�faut
    Mon programme fait parti d'une solution qui contient 9 executables...
    L'executable central, contient un Thread qui �coute un port TCP et qui attend des donn�es des autres appli...
    Cela a initialement �t� developp� sous VS6 puis VS2003 (et pas par moi)

    Compil� avec /MT sous VS2005 tout fonctionne bien... (apres quelques heures de debug qd meme).

    Mais j'ai du rajouter une fonction qui dialogue avec un WebService, pour ca j'ai utilis� l'importation automatique de Web Reference (un type manag� donc...)
    Pour que cela se compile, je dois compiler avec /clr /MD...

    La compilation fonctionne, l'�xecution fonctionne aussi sur le client, sauf que j'ai l'erreur du d�but � un certain moment...

    En fait, c'est encore plus compliqu�...Mais je vais avoir du mal � tout expliquer...

  12. #12
    Membre confirm�
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    222
    D�tails du profil
    Informations personnelles :
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 222
    Par d�faut
    En cours de r�solution gr�ce � l'excellent tutoriel
    http://nico-pyright.developpez.com/t.../managedworld/

    et l'utilisation de #pragma managed/unmanaged !!!!

  13. #13
    R�dacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par d�faut
    je suis ravi qu'il te plaise

Discussions similaires

  1. [C# 1.1/VS] Comment compiler 1.1 dans Visual Studio 2005 ?
    Par Aliend dans le forum Visual Studio
    R�ponses: 4
    Dernier message: 08/09/2006, 10h09
  2. importer lib compil�e en c dans projet c++ express 2005
    Par drpark dans le forum Visual C++
    R�ponses: 5
    Dernier message: 25/07/2006, 15h21
  3. Erreur de compilation de winsock.h dans VC++2005
    Par Jakariba dans le forum MFC
    R�ponses: 3
    Dernier message: 24/05/2006, 15h54
  4. [Firebird] quels composants dans Delphi 2005
    Par Harry dans le forum Bases de donn�es
    R�ponses: 2
    Dernier message: 07/04/2005, 15h29
  5. inclus ou pas inclus dans delphi 2005
    Par lopezpacheco dans le forum D�buter
    R�ponses: 4
    Dernier message: 11/02/2005, 00h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo