VSC++.net cohabitions code Managé dans du non managé? - C++ - Programmation
Marsh Posté le 23-02-2005 à 12:49:56
effectivement il est possible de faire cohabite le code non managé et le code managé, mais il faut partir d'un projet managé. mon probleme actuellement est de migrer mon projet MFC dans un projet vide C++ managé.
Marsh Posté le 23-02-2005 à 12:55:30
ben ou est le problème
tu fais un copier/coller dans un projet managé et puis voila
Marsh Posté le 23-02-2005 à 13:29:05
Propriétés du projet->Général->Utilisation des extensions managées : oui (/clr)
Marsh Posté le 23-02-2005 à 14:10:32
Harkonnen a écrit : ben ou est le problème |
Jai effective fait un copier coller mais ca ne marche pas. Jai le message d'erreur suivant:
error LNK2019: symbole externe non résolu _main référencé dans la fonction _mainCRTStartup
j'ai pensé que le compilateur ne trouvait pas le point d'entrer;
Dans mon projet le point d'entrer est la déclaration d'une class dérivé de Winapp;
CServeurSocketApp theApp;
pour compiler j'ai remplace cette ligne par les suivantes:
int main(void)
{
CServeurSocketApp theApp;
}
Et lorsque que j'exécute le projet et que j'ignore tous les messages d'erreur, le projet marche parfaitement.
HelloWorld a écrit : Propriétés du projet->Général->Utilisation des extensions managées : oui (/clr) |
J'ai aussi essaié également cette possibilité et le compilateur m'affiche le message d'erreur suivant:
ligne de commande error : option de ligne de commande '/RTC1 et /CLR non compatibles
Merci bien.
Avez vous d'autre suggestion
Marsh Posté le 23-02-2005 à 14:19:39
Tu as créé un projet console, il s'attend à avoir main().
Pour ton erreur, change voir tes settings dans project->C/C++->Génération de code:Vérifications de base à l'exécution. Normalement sur "Par défaut" ça passe.
Marsh Posté le 23-02-2005 à 15:23:04
Les deux projets sont différents.
Pour le premier j'ai tenter copier coller d'un projet MFC
(Et non console) dans un projet vide C++ managé. c'est pour celui ci qu'il ne trouve pas le point d'entrer.
Pour le second je suis parti du même projet MFC (et non console) en rajoutant un code Managé.
Et c'est ici que j'ai une erreur:
Le code ciblé est mangé et requiert #using <mscorlib.dll> et l'option '/clr'
Si on s'était déjà bien compris,
Jai fais le changement et j'ai une autre erreur:
ligne de commande error : option de ligne de commande '/GM et /CLR non compatibles
j'ai pallié a ce problème en modifiant les settings dans project->C/C++->Génération de code:Activation de la régénération minimale,qui avait comme valeur oui(/GM) par non.
et de nouveau une autre erreur:
ligne de commande error : option de ligne de commande '/ZI et /CLR non compatibles
je ne sais plus quoi faire.
Marsh Posté le 23-02-2005 à 17:11:34
Tu modifies tes settings jusqu'à ce que ça passe
http://msdn.microsoft.com/library/ [...] _2f.Zi.asp
Marsh Posté le 23-02-2005 à 18:35:50
Enfin ça marche. Je ne sais pas si les modifications sont aux normes mais ça marche. Cependant pour moi à cette instant cest lessentiel Merci pour vos suggestion et un grand merci à [HelloWorld].
Pour tout ceux qui veulent ajouter de code C++ manager dans un projet MFC(aux code non managé), et qui rencontre les même difficultées que moi, voici les modifications faites dans les settings (propriété du projet) en fonction des différents messages derreur rencontrés dans l'ordre.
Changement effectuer setting :
Le code ciblé est mangé et requiert #using <mscorlib.dll> et l'option '/clr'
- Général->utilisation des extensions managées : Oui
- C/C++->Général->Compilation comme code managé : pris en charge des assemblys
Ligne de commande error : option de ligne de commande '/RTC1 et /CLR non compatibles
- C/C++->Génération de code->vérification de base à lexécution : par défaut
ligne de commande error : option de ligne de commande '/GM et /CLR non compatibles
- C/C++->Génération de code->activation de la régénération minimale : non
ligne de commande error : option de ligne de commande '/ZI et /CLR non compatibles
- C/C++->Général->format des informations de débogage : Base de données du programme (/Zi)
Marsh Posté le 22-02-2005 à 11:57:56
Bonjour,
Actuellement je crée un projet sur visual C++.net et j'utilise les class MFC qui est du code non managé.
je souhaite utilisé les class qui gérer les XML tel que XmlTextWriter et XmlDocment mais je crois (et j'espère que j'ai tors) que ces class ne peuvent être utiliser que dans du code managé.
Il est possible dutiliser les 2 types de code dans le même projet mais je n'y suis pas arrivé.
Les références pour utiliser ces class dans un projet managé sont les suivant:
#using <mscorlib.dll>
#using <System.xml.dll>
using namespace System;
using namespace System::Xml;
using namespace System::Collections;
Lorsque je l'ajoute dans mon projet le compilateur me donne une error:
Le code ciblé est mangé et requiert #using <mscorlib.dll> et l'option '/clr'
Es que vous pouvez l'expliquer comment inclure les class XmlTextWriter et XmlDocment dans mon projet. Ou me proposé une autre solutions.
Merci de vos retours d'expérience et vos prestigieuses intuitions.
Message édité par darksqual le 23-02-2005 à 12:50:24