4-Compiler votre premier exemple: Le ShuttlePB d'orbiterC'est la ou la majeur partie des bonnes volonté s'arretent en général
visual studio, les libs et parametres C++ de microsoft c'est l'usine à gaz, on pourrais arguer de la complexité et du
large champs couvert par ces libs pour expliquer cela (on pourrait réecrire un OS complet avec) mais je suis convaincu
qu'ils auraient pu faire beaucoup plus simple, en bref le plus souvent ca plante à la compilation avec des erreur de link
(LNK 2001 la terreur du débutant par exemple) (ca doit être le même mec qui organisé ca et qui a trouvé le
nom "platform server 2003", esprit tordu et compliqué
)
Mais pas de panique, tonton Dan vous a mitonné tout ca au oignon, si vous avez bien fait les réglages du post plus haut et suivez attentivement ce qui ce passe ci-dessous ca devrais aller sans problèmes.
1-Allez dans le repertoire "Samples/ShuttlePB" de la SDK et cliquez sur "ShuttlePB.dsw"
2-Comme les exemples on été crée avec une ancienne version de MSVC il vous demandera de les convertirs, cliquez "oui pour tout"
A NE FAIRE QU'UNE FOIS ! Par la suite vous cliquerez sur "ShuttlePB.vcproj" qui est le nouveau format des projets msvc++Voila, c'est le grand moment vous allez compiler votre premier projet de DLL Orbiter...
Cliquez sur "F7" (compile)
Et bang !
(caramba encore raté)
"Erreur C2065" "Génération: 0 a réussi" ca veut dire qu'il y a une erreur et que votre DLL n'a pas été crée.
La si vous l'aviez pas encore fait c'est le moment de brancher le cerveau et de lire attentivement: cette erreur dépend du code SHuttlePB qui utilise en l'occurence une vieille façon de declarer des variables dans les boucles. Ca dépend du projet que vous chargerez vous ne pourrez pas appliquer une solution "aveugle" (je recopie) mais il faudra comprendre ce qui ce passe. Je vous explique ci-dessous:
En C++ TOUTES les variable doivent être déclarée avec le type de variable par exemple "int" pour integer (entiere sans chiffre après la virgule) "float" pour flottante (avec chiffre après la virgule genre 2.456)
Avant quand on avait besoin d'une variable dans une boucle on pouvait la declarer directement dans la boucle:
for(int i=0;i<10;i++)Maintenant MS c'est conformé au standard du C et la declaration doit ce faire en dehors de la boucle, donc on enleve le type (int, dword, uint) et on la declare plus haut avec le même type, je vous met plusieurs exemples:
faux:
for(int i=0;i<10;i++)juste:
int i;
for(i=0;i<10;i++)faux:
for(DWORD A=0;A<10;A++)juste:
DWORD A;
for(A=0;A<10;A++)MSVC est génial en dehors de ces petits probleme de compilation (quand on connait c'est pas genant) double cliquez dans la fenetre du bas sur la ligne "erreur C2065: 'i' : identificateur non déclaré" ceci va vous ouvrir le code source dans la fenetre principal avec la ligne ou il y a l'erreur en l'occurence celle la:
for (int i=0; i < nlift-1 && AOA[i+1] < aoa; i ++)Editez la de tel manière:
int i;
for (i=0; i < nlift-1 && AOA[i+1] < aoa; i ++)Voila, c'est le grand moment vous allez compiler votre premier projet de DLL Orbiter...
Cliquez sur "F7" (compile)
Et bang !
(caramba encore raté)
"MSVCRT.lib" "LNK2005" "déjà défini"
et plus bas
"Fatal error LNK1169 un ou plusieurs symbole définis à différentes reprise ont été rencontrées"
On rebranche le cerveau j'explique... pour compiler les choses C++ transforme du texte en code machine, il va chercher les fonctions et autres ressources dans des librairies. Pour je ne sais pas quel raisons certains symboles sont défini dans plusieurs librairies souvent msvcrt.lib msvrctd.lib libc.lib libcmt.lib etc etc... donc il commence a bosser par exemple avec libc.lib, compile ok, va chercher une autre ressource dans msvcrt.lib et la bang, il retrouve un symbole qu'il avait deja=LNK2005 Error (alaaarm alaaarm)
Comme avant ca dépend des projets donc pas de solutions copier coller... toutefois sur la ligne de l'erreur au debut il nous dit quel librairie est en cause :
MSVCRT.lib : error LNK2005
On va donc exclure cette librairie des liens pour qu'il ne ce mélange pas les pinceaux, allez dans "Projet" "Propriété de ShuttlePB" devellopez (+) "Editeur de liens" et selectionnez "Entrée" La, a la ligne "Bibliothèque spécifique ignorée" tapez "MSVCRT.lib" et cliquez OK: (si la ligne erreur marquait "libc.lib" on mettrais libc.lib sur cette ligne)
Vooooooilaaaaa, c'est le grand moment vous allez compiler votre premier projet de DLL Orbiter...
Cliquez sur "F7" (compile)
Si vous avez du bol ca donne ca:
Message modifié ( 25-06-2007 17:43 )