See site in english Voir le site en francais
Website skin:
home  download  forum  link  contact

Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length

Author Topic: Mes questions sur VC++ 2005  (Read 25654 times)

0 Members and 1 Guest are viewing this topic.

Offline Bibi Uncle

  • Legend
  • ******
  • Posts: 2264
  • Country: Canada ca
  • Karma: 17
08 July 2010, 04:17:13
Bonjour tout le monde !

Ici sera mon fil pour mes questions sur Visual C++ 2005.

Je l'ai installé comme Dan l'a dit et tout fonctionnait. Mais là, j'ai réinstaller les fichiers d'exemples ultra commentés par Dan. Et là, lorsque je compile en Debug, VC++ me fait ma joli DLL et ajoute un autre fichier du même nom dans le dossier Modules d'Orbiter. Du coup, Orbiter ne sait plus quel choisir et me fait un magnifique CTD :bug:. Lorsque j'enlève ce petit fichier au même nom que ma DLL, Orbiter fonctionne très bien.

Tout ce que je sais de ce fichier, c'est qu'il est un "VCExpress.ilk.8.0" ( selon le menu Propriété de l'Explorateur Windows ) et qu'il est sûrement un fichier pour le Debug car il n'est pas créé en Release.

J'ai cherché dans les milliard de fenêtres de VC++ et je n'ai pas trouvé comment changer sa destination, son nom ou tout simplement le supprimer. Pourtant, je suis sûr et certains que VC++ n'en créait pas avant. Je me souviens que je faisait F7, et quand il avait terminé de compiler, j'appuyais tout de suite sur F5 pour tester le tout.

Où peut-on changer son nom, son répertoire de destination ou le supprimer. :???:


Émile

Pluton, Saturne et Jupiter
Entendez-vous monter vers vous le chant de la Terre?

- Luc Plamondon

Offline tofitouf

  • Legend
  • ******
  • Posts: 1380
  • Karma: 0
Reply #1 - 08 July 2010, 10:04:42
coucou BIBI

quelle drole d'idée de mettre un autre fichier que la dll dans le répertoire module. ce qu'il faut y mettre c'est la dll que produit visual
pour automatiser le tout moi j'ajoute un post build step qui copie la dll dans le répertoire module.
ex : "copy Debug\monmoduledevaisseau.dll ..\..\..\Modules"

et ca fonctionne du tonnerre, à chauqe compilation il est directemnt mis à la bonne place et il n'y a plus qu'à faire F5 pour debugger. et zou


---------------------------------------------

PC en rade, codage en panne.... Nom de Zeus

Offline Papyref

  • Legend
  • ******
  • Posts: 5367
  • Country: France fr
  • Karma: 356
  • Je suis dans la Lune ne pas me déranger
Reply #2 - 08 July 2010, 10:52:46
En mode debug il y a toujours le fichier ilk dans le dossier module. Il n'est pas créé en mode release.
Verifie bien tes chemins de sortie dans les propriétés de ton projet.

:sage: Papyref


Offline Bibi Uncle

  • Legend
  • ******
  • Posts: 2264
  • Country: Canada ca
  • Karma: 17
Reply #3 - 08 July 2010, 14:35:50
Quote
Papyref a écrit:
En mode debug il y a toujours le fichier ilk dans le dossier module. Il n'est pas créé en mode release.
Verifie bien tes chemins de sortie dans les propriétés de ton projet.

:sage: Papyref

J'ai regardé dans toute la fenêtre "Propriété de MonAddon" et le seul chemin qui mène au répertoire module d'Orbiter est "Le fichier de sortie".

Quote
tofitouf a dit :
coucou BIBI

quelle drole d'idée de mettre un autre fichier que la dll dans le répertoire module. ce qu'il faut y mettre c'est la dll que produit visual
pour automatiser le tout moi j'ajoute un post build step qui copie la dll dans le répertoire module.
ex : "copy Debug\monmoduledevaisseau.dll ..\..\..\Modules"

et ca fonctionne du tonnerre, à chauqe compilation il est directemnt mis à la bonne place et il n'y a plus qu'à faire F5 pour debugger. et zou

Mais où entres-tu ce paramètre de copie ?

Merci pour votre aide les gars. :)


Émile

Pluton, Saturne et Jupiter
Entendez-vous monter vers vous le chant de la Terre?

- Luc Plamondon

Offline tofitouf

  • Legend
  • ******
  • Posts: 1380
  • Karma: 0
Reply #4 - 08 July 2010, 16:21:56
moi je ne me suis jamais occupé des fichiers ilk. ils doivent bien contenir des fichiers de debuggage mais ne sont pas utilisé directement par le debuggeur.

pour les paramètres de copie regarde dans l'un des derniers chapiter des paramètres du projet visual. je l'ai ne anglais moi et ca s'appelle "Post Build Step"


---------------------------------------------

PC en rade, codage en panne.... Nom de Zeus

Offline Bibi Uncle

  • Legend
  • ******
  • Posts: 2264
  • Country: Canada ca
  • Karma: 17
Reply #5 - 08 July 2010, 17:36:06
J'ai trouvé ce que tu parlais Tofitouf. En français, ils appellent ça "Événements après génération". J'ai copier ta ligne en faisant changeant le nom et les répertoires mais ça ne marche pas. il me répète :

"Project : error PRJ0019: Un outil a retourné un code d'erreur à partir de "Exécution d'un événement après génération...""

J'ai essayé copy, copie, copier et ça n'a pas marché non plus.


Émile

Pluton, Saturne et Jupiter
Entendez-vous monter vers vous le chant de la Terre?

- Luc Plamondon

Offline Bibi Uncle

  • Legend
  • ******
  • Posts: 2264
  • Country: Canada ca
  • Karma: 17
Reply #6 - 08 July 2010, 18:09:35
Voilà, j'ai déjà une autre question.

J'essaies de faire un panel 2D. J'ai fait une bitmap basique avec The GIMP que j'ai exporté en 24 bits car c'est la seule façon que j'ai trouvé pour l'avoir dans ResEdit. Je crée une resource .rc et un .h avec ResEdit. Je l'incorpore dans VC++ et je regarde le .h. Il m'indique mon panel qui s'appelle "IDB_BITMAP1". Ensuite, je voulais seulement afficher mon panel, sans boutons. J'ai suivi les instructions dans la doc "API_Guide" et ma fonction clbkLoadPanel(id) ressemble à ça :

Code: [Select]
#include "MaClasseAddon.h"

bool MonAddon::clbkLoadPanel (int id)
{
HBITMAP hBmp = LoadBitmap (hDLL, MAKEINTRESOURCE(IDB_BITMAP1));
oapiRegisterPanelBackground (hBmp);
return TRUE;
}

Après une erreur de compilation, j'ai ajouté la déclaration de hDLL comme ça, dans "MaClassePourAddon.h" :

Code: [Select]
HINSTANCE hDLL;

La compilation fonctionne (enfin !). Mais dans Orbiter, mon panel ne s'affiche pas lorsque je passe en panel 2D. Et si je touches à une flèche du clavier pour tenter de faire bouger le panel, Orbiter me fait un CTD.

Qu'est-ce que j'ai fait de mal :???:

EDIT :
Je précise que j'ai essayé aussi avec :
Code: [Select]
MonAddon::clbkLoadPanel (int id)
{
HBITMAP hBmp = LoadBitmap (hDLL, MAKEINTRESOURCE(IDB_BITMAP1));
oapiRegisterPanelBackground (hBmp,PANEL_ATTACH_BOTTOM|PANEL_MOVEOUT_BOTTOM, 0xFFFFFF);
return TRUE;
}



Message modifié ( 08-07-2010 18:14 )

Émile

Pluton, Saturne et Jupiter
Entendez-vous monter vers vous le chant de la Terre?

- Luc Plamondon

Offline tofitouf

  • Legend
  • ******
  • Posts: 1380
  • Karma: 0
Reply #7 - 08 July 2010, 19:22:54
Quote
Bibi Uncle a écrit:
J'ai trouvé ce que tu parlais Tofitouf. En français, ils appellent ça "Événements après génération". J'ai copier ta ligne en faisant changeant le nom et les répertoires mais ça ne marche pas. il me répète :

"Project : error PRJ0019: Un outil a retourné un code d'erreur à partir de "Exécution d'un événement après génération...""

J'ai essayé copy, copie, copier et ça n'a pas marché non plus.


yop : je viens de regarder, ma ligne est :
Code: [Select]
Copy Debug\*.dll ..\..\..\Modules\Plugin
je copie toutes les dll que mon outil génère.
dans mon exemple c'est un mfd donc je le met dans le répertoire plugin

et pour le nombre de .. cela dépends de l'endroit où se trouve le fichier .vcproj


---------------------------------------------

PC en rade, codage en panne.... Nom de Zeus

Offline Bibi Uncle

  • Legend
  • ******
  • Posts: 2264
  • Country: Canada ca
  • Karma: 17
Reply #8 - 10 July 2010, 23:49:14
J'ai essayé ce que tu as écrit Tofitouf, et ça n'a toujours pas marché. Pour le moment, je compile en Release et je lance Orbiter à la mitaine (où à la souris pour les perfectionniste :badsmile: ).

J'ai aussi règler mon problème de panel. Pour ceux qui auront ce problème un jour, c'était à cause que j'utilisais les exemples de Dan qui sont excellent... mais pas pour les variables globales. Quand on fait un panel, il faut une variable globale qui passera de DLLCLBK InitModule qui va prendre la variable hModule qu'Orbiter fourni. Ensuite, on utilisera la variable globale (appelée hDLL ou g_Param.hDLL dans les exemples de Martin) et la mettre dans clbkLoadPanel pour charger notre panel. Aussi, il ne faut pas oublier de mettre #define ORBITER_MODULE pour que DLLCLBK InitModule soit exécuté. Par contre, avec une une DLL séparée en plusieurs fichiers .cpp, il faut déclarer la variable globale dans MonAddon.h ce qui fait qu'elle est déclarée à chaque fichier .cpp et VC++ n'aime pas ça.

Pour règler mon problème, j'ai tout simplement pris l'exemple du ShuttlePB qui est écrit dans un fichier .cpp et qui permet les variables globales.

Maintenant, j'ai ajouté des MFDs. Ça plutôt bien été. Si j'ai des questions, je reposterai ici.



Message modifié ( 10-07-2010 23:50 )

Émile

Pluton, Saturne et Jupiter
Entendez-vous monter vers vous le chant de la Terre?

- Luc Plamondon

Offline tofitouf

  • Legend
  • ******
  • Posts: 1380
  • Karma: 0
Reply #9 - 11 July 2010, 10:52:28
je t'envoie en mail un exemple de projet. tu y trouvera mes paramètres de debuggage


---------------------------------------------

PC en rade, codage en panne.... Nom de Zeus

Offline MrSpock

  • Legend
  • ******
  • Posts: 1593
  • Karma: 0
Reply #10 - 22 July 2010, 00:50:16
Salut BiBi !
Interressant ton fil !
Ne le lache pas ...
Ton expérience va imminament ( marrant ce mot...) me servir .
Spock !


Mr Spock ,
Consultant de VULCAN TECH INDUSTRY.
( et accessoirement chatouilleur de PLAYMOBILS@tm )
http://kenai.com/projects/spacetechs-mecanos

Offline Bibi Uncle

  • Legend
  • ******
  • Posts: 2264
  • Country: Canada ca
  • Karma: 17
Reply #11 - 22 July 2010, 01:17:09
Merci MrSpock pour tes encouragements :).

Pour Tofitouf, j'ai regardé tes fichiers et je ne peux pas les ouvrirs avec VC++ 2005 car tu les as fait sous la version 2008. Mais pour l'instant, ce n'est pas le plus important, je me débrouille très bien avec le debugString d'Orbiter.

J'ai une autre question. Comme je l'ai écrit dans mon dernier post, j'utilise un seul fichier .cpp pour écrire mon projet. Mais là, ça commence à grossir et je me perd dans mon code.

Donc, j'aimerais bien séparé mon code dans plusieurs fichiers .cpp pour plus de facilités. Mais là, je me heurte encore à ce problème de hDLL :wall:. Pour la variable, j'ai trouvé une solution qui m'a l'air de marcher. C'est grâce à ce post : http://orbiter.dansteph.com/forum/read.php?f=5&i=10220&t=10220&page=11 (voir vers la fin. Vous pourrez pas dire que je n'ai pas cherché ! :rant: :badsmile: ). Toutefois, mon problème, c'est qu'Orbiter ne semble jamais exécuter DLLDLBK void InitModule(). Je ne comprend pas pourquoi :???: Pourtant, je l'ai mit dans Panel2D.cpp qui contient clbkLoadPanel().

:help:

EDIT :
À vrai dire, si quelqu'un a un projet basique qui est une tiré de l'exemple de Dan mais contenant un panel 2D, ça m'aiderait vraiment beaucoup parce que là, je n'ai que les exemples de Martin qui sont écrit en un .cpp et contienent un panel 2D.



Message modifié ( 22-07-2010 02:17 )

Émile

Pluton, Saturne et Jupiter
Entendez-vous monter vers vous le chant de la Terre?

- Luc Plamondon

Offline MrSpock

  • Legend
  • ******
  • Posts: 1593
  • Karma: 0
Reply #12 - 22 July 2010, 02:34:09
REEDIT :

Pour que InitModule soit lu , tu dois faire un #define MODULE_ORBITER ( ou qqchose comme çà, regarde dans rien.cpp).SInon , lecompilateur charge ta dll en invoquant Dllmain, que Martin a encapsulé dans son code et qui n'est pas visible pour nous ( compilé dans les .lib ).
Le plus important , c'est la HIERARCHIE des fichiers dans un projet .
Si ton fichier le plus bas dans ta hierarchie ( "baseDeMonProj.h") commence par définir MODULE_ORBITER , les fichiers au dessus ( qui comportent un #include "baseDeMonProj") sont tous prêts (normalement ) à basculer sur le mode spécial d'invocation de Dll de Martin " le sorcier ..." .

Salut ! De rien ...
Heu ... tu parles de çà ?
Quote
Le fait d'écrire ça permet de mettre au clai ...... moui .... bon .... en fait, j'ai mis Rien.cpp dans Panel.cpp

Ok ...
Quote
#include "MaClasseAddon.h"

bool MonAddon::clbkLoadPanel (int id)
{
   HBITMAP hBmp = LoadBitmap (hDLL, MAKEINTRESOURCE(IDB_BITMAP1));
   oapiRegisterPanelBackground (hBmp);
   return TRUE;
}
Le fait de renseigner le compilateur par ton include "MaClasseAddon.h" te permet juste de ne pas avoir d'erreur de compilation .
Le compilateur voit hDll , le passe en paramètre de fonction .
Seulement si hDll n'est pas initialisé quelque part ( Est-ce que hDll est membre de MonAddon ?) , sa valeur lors de
son utilisation dans ta fonction, ben c'est ... NULL .
Tu peux vérifier en faisant un test conditionnel :
if (hDLL==NULL)  MessageBox( NULL, "BiBi debug", " zut et flute" , MB_OK); (un truc du genre..)
Tu peux aussi bypasser :
if(hDLL==NULL) return ; ce qui au moins t'évite le CTD.
Mais cela ne résout pas ton problème .

L'idéal , c'est d'avoir un pointeur ou une copie de hDLL dans ta classe MonAddon .
Genre hDLL_copy=hDLL quand tu es sûr que hDLL est non-nul .
J'aimerais bien voir ta déclaration de classe .

Sinon , pour en venir aux déclarations externes , sous Borland le compilateur est TRES STRICT .
La variable X est déclarée dans A.h comme suit : extern HANDLE X .
Elle doit être instanciée avant d'être utilisée dans un fichier externe .
Donc, dans A.cpp , tu déclares encore extern   HANDLE X  et SURTOUT tu l' initialises avec la fonction adéquate.

Ensuite, dans un fichier B.cpp , tu peux déclarer extern HANDLE X aprés ta section #include .
Normalement , X est valide puisque initialisé avant par A.cpp .

Je te dis cela de mémoire , le mieux serait que je sois loggé avec ton projet dans vs2005 .
Pourquoi pas ? J'ai besoin de me faire la main avec cet environnement .
De toute façon, quand je vais me mettre à coder sérieusement, j'aurais les mêmes problèmes que toi .
A+ , Spock .



Message modifié ( 22-07-2010 02:46 )

Mr Spock ,
Consultant de VULCAN TECH INDUSTRY.
( et accessoirement chatouilleur de PLAYMOBILS@tm )
http://kenai.com/projects/spacetechs-mecanos

Offline MrSpock

  • Legend
  • ******
  • Posts: 1593
  • Karma: 0
Reply #13 - 22 July 2010, 21:55:53
Ok Bibi et compagnie !
J'ai chargé le projet, no problemo .
Je voulais admirer la texture Panel en ouvrant monAddon.rc mais message d'erreur !
Normal puisque
Quote
IDB_BITMAP1        BITMAP         "..\\DeltaGlider\\Bitmaps\\Panel1.bmp"
Et que tu as oublié de me joindre la texture dans ton pack .Tant pis , en guise d'un panel tu auras le bas du dos bleu
d'une gazelle de l'espace .

EN passant : Je n'ai pas l'habitude de charger des bitmaps , surtout quand ils sont larges , dans des dll ou .rc .
La technique ne m'est pas familière , tant mieux j'apprends plus .
En échange , ceci :

Chargement d'un bmp à partir d'un emplacement fichier ( ma préférence )
Quote
BOOL LoadBitmap(
   LPCTSTR lpszResourceName
);
Chargement d'un bmp à partir d'un identificateur de ressource ta préférence ?
Quote
BOOL LoadBitmap(
   UINT nIDResource
);

QUestion : lpszResourceName , tu le mettrais où ?
Réponse : Je ne sais pas non plus .

J'ai fait le tour des dossiers dans Orbiter , rien qui correspond . J'en déduis que quelqu'un a décidé que ce serait comme çà et pas autrement  ( ressource compilée dans la dll ) . Une alternative ,mais qui change les habitudes, serait
de creer un dossier PANEL dans le dossier VESSEL pour chaque vaisseau que tu bricoles . J'essaierai de le faire, pour tester . Ej je compte suivre l'exemple de Dan avec son Installateur . Mais bon ...

Je continue :
Un F7 ...

Quote
------ Build started: Project: MonAddon, Configuration: Debug Win32 ------
Compiling...
Panel2D.cpp
c:\documents and settings\*****\mes documents\visual studio 2005\projects\bibi\monaddon\panel2d.cpp(9) : error C2065: 'hDLL' : undeclared identifier
Build log was saved at "file://c:\Documents and Settings\*****\Mes documents\Visual Studio 2005\Projects\bibi\MonAddon\Debug\BuildLog.htm"
MonAddon - 1 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========



Message modifié ( 22-07-2010 22:08 )

Mr Spock ,
Consultant de VULCAN TECH INDUSTRY.
( et accessoirement chatouilleur de PLAYMOBILS@tm )
http://kenai.com/projects/spacetechs-mecanos

Offline Bibi Uncle

  • Legend
  • ******
  • Posts: 2264
  • Country: Canada ca
  • Karma: 17
Reply #14 - 22 July 2010, 22:08:19
Pour le bitmap, c'est ResEdit qui s'en charge. Moi je ne fais que prendre la définition #define IDB_PANEL1 115 dans resources.h pour avoir mon panel.


Émile

Pluton, Saturne et Jupiter
Entendez-vous monter vers vous le chant de la Terre?

- Luc Plamondon

Offline MrSpock

  • Legend
  • ******
  • Posts: 1593
  • Karma: 0
Reply #15 - 22 July 2010, 22:14:08
Eh ben il a pas bien fait son travail , ou tu n'as pas compilé la ressource .
Pas grave pour le moment .
J'en suis donc à l'erreur due à l'absence de hdll . Normal puique tu me dis me l'avoir enlevée .
J'ai besoin d'une demi-Heure de réflexion /test et je reviens . Tu avances toi ?;)

Bon, je vais faire un tour dans le SDK .
C'est toi qui a volontairement mis en commentaire
Quote
// --------------------------------------------------------------
DLLCLBK VESSEL *ovcInit (OBJHANDLE hvessel, int flightmodel)
{
   return new MonAddon (hvessel, flightmodel);
}
// --------------------------------------------------------------
// Vessel cleanup
// --------------------------------------------------------------
DLLCLBK void ovcExit (VESSEL *vessel)
{
   if (vessel) delete (MonAddon*)vessel;
}

Je n'ai pas eu de réelle confirmation ( un sous entendu du doc') mais je crois que ces deux fonctions servent
à charger la dll dans Orbiter .

Quote
DLLCLBK VESSEL *ovcInit (OBJHANDLE hvessel, int flightmodel)
Sert au moins à charger le vaisseau dans le sim ... Oui c'est çà .
Car un chapître est dédié aux concepteurs de plugin , et dans la doc un vaisseau n'est pas un plugin .
Pour un plugin , c'est InitModule qu'on utilise .
Si tu pouvais me dire jusqu'où tu es allé avec ce projet ? L'image publiée sur le site , ce n'est pas lui ?
De retour de l'API_GUIDE :
Quote
Once you have created the panel BMP file, you should add it as a bitmap resource to your
vessel module project. Now you are ready to write the code to support the panel. To do so,
you need to overload the clbkLoadPanel method of the VESSEL2 class:
bool MyVessel::clbkLoadPanel (int id)
{
...
}
Here we assume that MyVessel is a class derived from VESSEL2 (see Section 1.2 on how to
create vessel instances). id is a panel identifier which Orbiter will provide to let your function
know which panel is required. If only a single main panel is defined, id will always be 0. If you
define more than one panel, you should examine this parameter to decide which panel to
load

Je crois que tu es bilingue et que tu comprends donc le sens de ce qui est exprimé en haut .
En langage de programmeur , tu dois comprendre que clbkLoadPanel (int id) est une fonction membre de la
classe MyVessel . Donc : Pour être visible dans le programme , MyVessel doit être construit !
InitModule sert à charger ta dll dans orbiter , mais DLLCLBK VESSEL *ovcInit (OBJHANDLE hvessel, int flightmodel)
sert à le créer et à l'initialiser . TOI , TU L'AVAIS MASQUé ... DOnc -> pas de vaisseau , pas de panneau .
Spoiler  :
Pas de bras , pas de chocolat !
Ce qui est bien , c'est que toi et moi , on est pareils ! Largués ...
Sauf que moi , j'ai bien plus l'expérience que toi ... d'être largué !:eek:
DOnc , je recadre un peu :
THEORIE DE L'UTILISATION DU SDK .

1 _ D'une bonne lecture tu feras .
2 _ De bons exercices tu suivras .
3 _ Va dans le dossier Modules d'Orbiter : Qu'est-ce que tu vois ? mmh... mmh ?

Pleins de supervaisseaux.dll , un dossier StartUp et un dossier PLUGIN .
Startup , on oublie pour le moment .
Mais dans le dossier PLUGIN , qu'y a t-il ? Des dll ?
POURQUOI LES AVOIR SEPAREES ALORS ( vaisseau , plugin) .
PARCE QU'ILS SONT DIFFERENTS ET QUE ILS NE SE COMPILENT PAS , NI NE S'EXECUTENT DE LA MêME MANIèRE .

Voilà où j'en suis arrivé ! Comme toi , je cherchais comme un désespéré à placer un InitModule() là où il ne servirait de rien .... J'espère être dans le vrai , qu'un :wor: ancien donne son avis ! svp ?
Avant de programmer , rappellons nous qu'un programme informatique n'est rien de plus qu'une implacable réalisation
de la logique !!!!!!!!!!!!!

Ainsi , relisons le châpitre concernant les VESSELS et pas à pas nous arriverons au PANEL .
Mais courir avant de savoir marcher ... :badsmile:



Message modifié ( 22-07-2010 23:20 )

Mr Spock ,
Consultant de VULCAN TECH INDUSTRY.
( et accessoirement chatouilleur de PLAYMOBILS@tm )
http://kenai.com/projects/spacetechs-mecanos

Offline Bibi Uncle

  • Legend
  • ******
  • Posts: 2264
  • Country: Canada ca
  • Karma: 17
Reply #16 - 22 July 2010, 23:10:37
Oui, c'était voulu de masquer tout le fichier Rien.cpp. Mais mon ovcInit() est dans Panel2D.cpp. Je voulais le mettre avec InitModule().

Le projet que je t'ai passé n'est pas Sentinel, le vaisseau qu'on est en train de faire. C'est la version pré-alpha quand j'essayais de mettre un panel. Voyant que ça ne fonctionnait pas, j'ai tout mis dans un .cpp comme les exemples de Martin et ça l'a marché. Mais là, avec tout le code que j'ai écrit, ça commence à être indigeste :sick: de faire ça dans un seul .cpp. Donc, je veux trouver ce qui ne marche pas avec le panel dans une version séparé en plein de .cpp pour pouvoir faire du copier-coller et rendre mon add-on plus lisible.


Émile

Pluton, Saturne et Jupiter
Entendez-vous monter vers vous le chant de la Terre?

- Luc Plamondon

Offline MrSpock

  • Legend
  • ******
  • Posts: 1593
  • Karma: 0
Reply #17 - 22 July 2010, 23:29:04
Oublie le copier coller pour l'instant .
Le pc est une machine qui reçoit des instructions .
L'ordre des instructions est primordial , tu DOIS le connaître afin d'être par la suite CREATIF .
Logique dans l'ordre des fonctions , Créatif dans le corps de la fonction .
Je comprends mieux ce que tu as voulu faire , mais le résultat c'est ... l'exemple de dan passé à la moulinette .
Je vais étudier cette fameuse logique et dés que je maitrise le sujet , je t'envoie un rapport .
Relis attentivement le SDK et surtout ne sois pas trop préssé car en programmation , tu ne peux sauter les étapes
de la compréhension . Bien sûr , si tu n'as pas le temps , je comprends que tu cherches à copier/collé .
Mais c'est beaucoup mieux d'imprimer dans la zone frontale du cortex !
Quote
En biologie, le cortex (mot latin signifiant écorce) désigne la couche superficielle ou périphérique d'un tissu organique.
Par métonymie, le terme sert souvent à désigner le cortex cérébral, ainsi on parlera du cortex pariétal pour désigner la couche de neurones du cerveau formant le cortex du lobe pariétal.
Ce sera tout pour ce soir , je ne te laisse pas tomber , et je suis sûr que demain il y aura de bons commentaires ...
Bonne nuit bibi !
Spock .



Message modifié ( 22-07-2010 23:38 )

Mr Spock ,
Consultant de VULCAN TECH INDUSTRY.
( et accessoirement chatouilleur de PLAYMOBILS@tm )
http://kenai.com/projects/spacetechs-mecanos

Offline Bibi Uncle

  • Legend
  • ******
  • Posts: 2264
  • Country: Canada ca
  • Karma: 17
Reply #18 - 22 July 2010, 23:49:25
Quote
Pleins de supervaisseaux.dll , un dossier StartUp et un dossier PLUGIN .
Startup , on oublie pour le moment .
Mais dans le dossier PLUGIN , qu'y a t-il ? Des dll ?
POURQUOI LES AVOIR SEPAREES ALORS ( vaisseau , plugin) .
PARCE QU'ILS SONT DIFFERENTS ET QUE ILS NE SE COMPILENT PAS , NI NE S'EXECUTENT DE LA MêME MANIèRE .

Voilà où j'en suis arrivé ! Comme toi , je cherchais comme un désespéré à placer un InitModule() là où il ne servirait de rien ....

Pourtant, l'API nous indique qu'on peut l'utiliser dans un vessel et Martin l'utilise dans tous ses projets contenant un panel et/ou GDI.

Quote
When the user launches the simulation by picking a scenario from the Orbiter Launchpad
dialog and pressing the “Launch Orbiter” button, Orbiter will load the vessel DLL module for
each spacecraft type used in the simulation, and call its InitModule function. This function
is called only once per Orbiter session, no matter how many spacecraft of that type appear in
the simulation. It will not be called again if the user exits the simulation to the Launchpad, and
reloads another simulation scenario. You can use it to initialise global (non-instance specific
and non-session specific) parameters.
-API_Guide

Quote
Ainsi , relisons le châpitre concernant les VESSELS et pas à pas nous arriverons au PANEL .
Mais courir avant de savoir marcher ...

J'ai déjà tout lu l'API_Guide et j'en compris beaucoup. Je comprend comment Orbiter utilise ma DLL. Ce que je ne comprend pas, c'est pourquoi, lorsque je veux séparer mon projet, InitModule() n'est pas exécuté par Orbiter.

Quote
Oublie le copier coller pour l'instant . [...] Bien sûr , si tu n'as pas le temps , je comprends que tu cherches à copier/collé .

Quand je disais copier-coller, je voulais dire copier-coller mon projet Sentinel, pas les exemples de Martin.

Encore :merci: pour ton aide. En une soirée, tu as écris beaucoup de lignes.

Quote
Bonne nuit bibi !

Bon soupé (ou dîner pour les français) tu voulais dire :badsmile:. Il est 17h 49 chez moi.


Émile

Pluton, Saturne et Jupiter
Entendez-vous monter vers vous le chant de la Terre?

- Luc Plamondon

Offline MrSpock

  • Legend
  • ******
  • Posts: 1593
  • Karma: 0
Reply #19 - 22 July 2010, 23:55:32
Avant d'arracher la prise de mon pc ...
Quote
Orbiter will load the vessel DLL module for
each spacecraft type used in the simulation, and call its InitModule function

Analyse Grammaticale : Le Its appartient à qui ?
:wonder:

Heuh ? c'est mal d'écrire beaucoup ?
Spocky , Bonne fin d'aprés-midi !


Mr Spock ,
Consultant de VULCAN TECH INDUSTRY.
( et accessoirement chatouilleur de PLAYMOBILS@tm )
http://kenai.com/projects/spacetechs-mecanos

Offline tofitouf

  • Legend
  • ******
  • Posts: 1380
  • Karma: 0
Reply #20 - 23 July 2010, 02:06:18
....

Euh il appelle la dll qui contient la description du vaisseau....
Celle déclaré dans son cfg si je ne m'abuse.

c'est pas ca la question ?


---------------------------------------------

PC en rade, codage en panne.... Nom de Zeus

Offline Bibi Uncle

  • Legend
  • ******
  • Posts: 2264
  • Country: Canada ca
  • Karma: 17
Reply #21 - 23 July 2010, 02:24:42
Quote
MrSpock a écrit:
Avant d'arracher la prise de mon pc ...
Quote
Orbiter will load the vessel DLL module for
each spacecraft type used in the simulation, and call its InitModule function

Analyse Grammaticale : Le Its appartient à qui ?
:wonder:

Heuh ? c'est mal d'écrire beaucoup ?
Spocky , Bonne fin d'aprés-midi !


Je vais sortir mes talents de Shakespeare. To be or not to be, that is the question... euh... non, c'était pas ça la question.

Donc, ici, its n'est pas la contraction du pronom it et du verbe to be (ici conjugué à la troisième personne du singulier, donc is). Ça, il ne faut pas mélanger. Donc, petite traduction de mon cru :

Orbiter chargera la DLL du vaisseau pour chaque type d'engin utilisé dans la simulation, et il appelle sa fontion InitModule.

Maintenant en français, c'est beaucoup plus facile de trouver ce que its remplace. On pourrait penser à première qu'il remplace Orbiter mais il remplace plutôt la DLL du vaisseau car il ne faut pas se tromper avec le il juste avant. À cause de lui, notre cerveau se dit "il, c'est Orbiter donc sa, c'est Orbiter aussi" mais la règle grammaticale stipule pourtant qu'il remplace le dernier groupe nominal en rapport avec ce qui est expliqué par la suite.

PS : En rédigeant ce post, j'avais l'air de : :fou:


Émile

Pluton, Saturne et Jupiter
Entendez-vous monter vers vous le chant de la Terre?

- Luc Plamondon

Offline MrSpock

  • Legend
  • ******
  • Posts: 1593
  • Karma: 0
Reply #22 - 23 July 2010, 07:59:40
Je trouve ce sujet du " its " très interressant car selon son interprétation le lecteur passera un poil trop loin pour se mettre
en Orbite autour de la Planète SDK !
N'hésitez pas à VOTER : Orbiter , ou VESSEL pour la session du " its " ?

j'ai un gros besoin de commencer un projet à la main , ligne aprés ligne , afin d'être sûr de ce que je fais .
Copier la pensée d'un autre c'est bien , mais la coller au bon endroit c'est mieux .

Quote
Euh il appelle la dll qui contient la description du vaisseau....
Celle déclaré dans son cfg si je ne m'abuse.

c'est pas ca la question ?

La formulation de ma question avait pour but d'intriguer , faire réfléchir et donc remonter des infos que je n'ai pas
actuellement : LE VERITABLE FONCTIONNEMENT D'ORBITER EN INTERNE . Non pas que ce ne soit pas écrit , mais nous
venons de voir que même ce qui est écrit peut ne pas être compris !

Il est ègal à ? :
Spoiler  :
ORBITER

Marrant : Certains mots , comme en programmation C++ , agissent comme des pointeurs !
ORBITER * Il ;
:trucdeouf:
SPOCK


Mr Spock ,
Consultant de VULCAN TECH INDUSTRY.
( et accessoirement chatouilleur de PLAYMOBILS@tm )
http://kenai.com/projects/spacetechs-mecanos

Offline MrSpock

  • Legend
  • ******
  • Posts: 1593
  • Karma: 0
Reply #23 - 23 July 2010, 08:40:40
RE :
Quote
When the user launches the simulation by picking a scenario from the Orbiter Launchpad
dialog and pressing the “Launch Orbiter” button, Orbiter will load the vessel DLL module for
each spacecraft type used in the simulation, and call its InitModule function. This function
is called only once per Orbiter session, no matter how many spacecraft of that type appear in
the simulation. It will not be called again if the user exits the simulation to the Launchpad, and
reloads another simulation scenario. You can use it to initialise global (non-instance specific
and non-session specific) parameters.
-API_Guide

Lu  dans la globalité , je rejoins ton avis ( plus d'expérience que moi avec Orbiter et meilleur que moi en Anglais) concernant la fonction InitModule
de chaque vessel DLL module .
Ooops , pardon Bibi , Je t'ai réveillé ?
:badsmile:

Donc , en m'alignant sur ta logique :
_Il faut bien utiliser InitModule pour initialiser hDll .
_ Tu peux dans ton découpage de fichier répartir tes fonctions selon la logique de LA PORTEE de tes variables globales
DANS LE CPP . Sinon , il sera néccessaire d'utiliser le terme extern dans chaque .cpp qui fera appel à Hdll .
Ce processus de placer une variable en externe est assez complexe quand on ne connait pas les règles du compilateur
utilisé ( ce qui est mon cas ... ) . Quand j'aurais fait l'expérience ( aujourd'hui ) , je te rerournerai l'info .
REEDIT : PAS LA PEINE DE METTRE DES EXTERNES ICI !! VOIR POST SUIVANT...
Spock .



Message modifié ( 23-07-2010 17:15 )

Mr Spock ,
Consultant de VULCAN TECH INDUSTRY.
( et accessoirement chatouilleur de PLAYMOBILS@tm )
http://kenai.com/projects/spacetechs-mecanos

Offline MrSpock

  • Legend
  • ******
  • Posts: 1593
  • Karma: 0
Reply #24 - 23 July 2010, 09:09:01
REEDIT : Tu peux sauter ce post aussi si tu veux éviter un mal de crâne...

Pas eu le temps encore de mettre en application ,
mais voici un lien qui devrait t'aider en attendant :
Variables globales ENTRAIDE
Spock.



Message modifié ( 23-07-2010 17:16 )

Mr Spock ,
Consultant de VULCAN TECH INDUSTRY.
( et accessoirement chatouilleur de PLAYMOBILS@tm )
http://kenai.com/projects/spacetechs-mecanos