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: [tutorial] Posez vos question sur les DLL C++ (no 2)  (Read 28753 times)

0 Members and 1 Guest are viewing this topic.

Offline DanSteph

  • Administrator
  • Legend
  • *****
  • Posts: 14999
  • Karma: 172
  • Hein, quoi !?
    • FsPassengers
Reply #150 - 16 October 2009, 05:23:24
Ah damned je l'ai déjà eu celle la , c'est un truc de lib ou de paramètre of course mais me souviens plus.
Tu peux poster le zip du projet quelque part et me filer le lien en privé que je zieute ?

A++

Dan


Offline siriusfett

  • Legend
  • ******
  • Posts: 967
  • Country: France fr
  • Karma: 5
Reply #151 - 16 October 2009, 13:12:05
je rencontre un problème similaire quand je compile le ShuttlePB SDK for VC++ 2008 Express dispo sur orbit
hangar mods mais seulement en release...

Quote
1>------ Début de la génération : Projet : ShuttlePB2008, Configuration : Release Win32 ------
1>Compilation en cours...
1>ShuttlePB.cpp
1>Édition des liens en cours...
1>   Création de la bibliothèque .\..\..\..\Modules/ShuttlePB.lib et de l'objet .\..\..\..\Modules/ShuttlePB.exp
1>ShuttlePB.obj : error LNK2001: symbole externe non résolu "const type_info::`vftable'" (??_7type_info@@6B@)
1>ShuttlePB.obj : error LNK2019: symbole externe non résolu "void __cdecl operator delete(void *)" (??3@YAXPAX@Z)
référencé dans la fonction "public: virtual void * __thiscall LaunchpadItem::`scalar deleting destructor'(unsigned int)"
(??_GLaunchpadItem@@UAEPAXI@Z)
1>ShuttlePB.obj : error LNK2019: symbole externe non résolu "void __cdecl operator delete[](void *)" (??
_V@YAXPAX@Z) référencé dans la fonction "public: virtual void * __thiscall LaunchpadItem::`vector deleting
destructor'(unsigned int)" (??_ELaunchpadItem@@UAEPAXI@Z)
1>ShuttlePB.obj : error LNK2019: symbole externe non résolu "void __stdcall `eh vector destructor iterator'(void
*,unsigned int,int,void (__thiscall*)(void *))" (??_M@YGXPAXIHP6EX0@Z@Z) référencé dans la fonction "public: virtual
void * __thiscall LaunchpadItem::`vector deleting destructor'(unsigned int)" (??_ELaunchpadItem@@UAEPAXI@Z)
1>ShuttlePB.obj : error LNK2001: symbole externe non résolu __fltused
1>ShuttlePB.obj : error LNK2001: symbole externe non résolu __purecall
1>ShuttlePB.obj : error LNK2019: symbole externe non résolu "void * __cdecl operator new(unsigned int)" (??
2@YAPAXI@Z) référencé dans la fonction _ovcInit
1>LINK : error LNK2001: symbole externe non résolu __DllMainCRTStartup@12
1>F:\Jeux\CTVATV\Modules\ShuttlePB.dll : fatal error LNK1120: 8 externes non résolus
1>Le journal de génération a été enregistré à l'emplacement
"file://c:\OrbiterSDK\Orbitersdk\samples\ShuttlePB2008\Release\BuildLog.htm"
1>ShuttlePB2008 - 9 erreur(s), 0 avertissement(s)
========== Génération : 0 a réussi, 1 a échoué, 0 mis à jour, 0 a été ignoré ==========

Curieusement en passant par un debug en premier je peux compiler en release mais la dll que je récupère fait
toujours le même poids !!!



Offline DanSteph

  • Administrator
  • Legend
  • *****
  • Posts: 14999
  • Karma: 172
  • Hein, quoi !?
    • FsPassengers
Reply #152 - 16 October 2009, 13:22:27
postez moi le lien les libs c'est la merde mais je trouve toujours rapidement quand je peux tester, comme c'est du
tatonnement je suis infoutu de vous dire ce qui manque vraiment en lisant les messages. (par contre une fois résolu je peux
dire ce qui n'allais pas ;) )

Dan


Offline MartySpaceLines

  • Legend
  • ******
  • Posts: 1096
  • Karma: 0
Reply #153 - 19 October 2009, 10:59:03
Quote
MartySpaceLines a écrit:
Bien le bonjour! ;)

Alors... Comme beaucoup de monde ici, je connais à-peu-près le langage C++, mais lorsqu'il s'agit de configurer Visual et de
farfouiller dans toutes ces librairies au nom obscure (msvcrt et autres), alors là ça se corse!!
Pour quelqu'un qui s'y connaît, c'est surement un problème easy à résoudre, mais pour moi...no comment!

Ma sortie du debug:
Quote
1>------ Début de la génération : Projet : MSLJ_Gemini, Configuration : Debug Win32 ------
1>Édition des liens en cours...
1>   Création de la bibliothèque .\Debug/MSLJ_Gemini.lib et de l'objet .\Debug/MSLJ_Gemini.exp
1>Config_Stage1.obj : error LNK2001: symbole externe non résolu "public: virtual void __thiscall
MFD::Update(struct HDC__ *)"
[...]
"file://c:\Users\Marty\Desktop\Orbiter_Gemini\Orbitersdk\samples\GeminiSpirit\Debug\BuildLog.htm"
1>MSLJ_Gemini - 7 erreur(s), 0 avertissement(s)
========== Génération : 0 a réussi, 1 a échoué, 0 mis à jour, 0 a été ignoré ==========


Sinon, mon visual est configuré comme dans le tuto de Dan, j'ai pas mis de "dépendances supplémentaires" (j'ai
essayé avec
quelques-unes: aucun résultat mais bon...c'était du tatonnage) et j'ai dû exclure  msvcrt.lib et libcpmtd.lib (sinon il me
dit qu'elles font conflict...)

Merci beaucoûp à ceux qui oseront jeter un coup d'oeil là-dessus!


Je viens d'essayer de redémarrer avec le projet "ShuttlePB" et là aussi rien à faire :(
Ce qui me taquine surtout, c'est la lnk2001 qui vient avec MFD::Update (HDC)... et ça c'est vraiment bizarre: je fais
un vaisseau, donc techniquement y devrait même pas savoir ce qu'est qu'un MFD! (A moins que je le lui dise...)


@++

MSL  


Offline tofitouf

  • Legend
  • ******
  • Posts: 1380
  • Karma: 0
Reply #154 - 19 October 2009, 13:20:40
Quote
MartySpaceLines a écrit:

Je viens d'essayer de redémarrer avec le projet "ShuttlePB" et là aussi rien à faire :(
Ce qui me taquine surtout, c'est la lnk2001 qui vient avec MFD::Update (HDC)... et ça c'est vraiment bizarre: je fais
un vaisseau, donc techniquement y devrait même pas savoir ce qu'est qu'un MFD! (A moins que je le lui dise...)


si les vaisseau créent les MFD donc c'est normal qu'il y' ait un lien.

Je viens de retster, juste en reprennant le ShuttlePB tout neuf, j'ai convertit le dsw en version visual studio 2008 (free)
et juste ajouté le lien vers ..\..\include dans le path et ajouté cette ligne : msvcrt.lib msvcirt.lib à "Ignore specific
libraries"

et ca a compilé et linké correctement. Mais bon j'ai pas testé le résultat


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

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

Offline DanSteph

  • Administrator
  • Legend
  • *****
  • Posts: 14999
  • Karma: 172
  • Hein, quoi !?
    • FsPassengers
Reply #155 - 21 October 2009, 13:34:38
Quote
MartySpaceLines a écrit:
Sinon, mon visual est configuré comme dans le tuto de Dan, j'ai pas mis de "dépendances supplémentaires" (j'ai
essayé avec quelques-unes: aucun résultat mais bon...c'était du tatonnage) et j'ai dû exclure  msvcrt.lib et libcpmtd.lib
(sinon il me dit qu'elles font conflict...)

J'ai testé ton projet, j'ai juste changé les ignore librarie pour mettre uniquement celle-la:

(dans ignore library: ) MSVCRT.lib

Ca compile nickel. Si ca marche toujours pas reposte le log de compilation et check bien tes chemins lib/include

A++

Dan



Message modifié ( 21-10-2009 14:25 )


Offline Tom

  • Sr. Member
  • ****
  • Posts: 367
  • Karma: 0
Reply #156 - 24 October 2009, 12:24:50
edit : J'ai rien dit, le problème est résolu, merci la lecture, relecture, et encore relecture de la page 2 :D

edit 2 : J'ai réussi ma première animation !



Message modifié ( 24-10-2009 18:25 )

---------------
Tom

Offline Tom

  • Sr. Member
  • ****
  • Posts: 367
  • Karma: 0
Reply #157 - 24 October 2009, 19:12:43
A peine un problème résolu qu'on tombe dans une nouvelle problématique !

Je m'explique :

Pour l'animation de l'iris, j'ai neuf lames qui tournent toutes autour du même axe mais avec des points de rotation
différents, donc pour mon code, j'ai mis ceci :

Quote
static UINT GroupMeshBlade1[1] = {6};
   BladeOpen1 = new MGROUP_ROTATE(0,GroupMeshBlade1,1,_V(17.668,0,-30.601),_V(0,1,0),(float)(-0.4*PI));
   static UINT GroupMeshBlade2[1] = {0};
   BladeOpen2 = new MGROUP_ROTATE(0,GroupMeshBlade2,1,_V(-6.136,0,-34.798),_V(0,1,0),(float)(-0.4*PI));
   static UINT GroupMeshBlade3[1] = {13};
   BladeOpen3 = new MGROUP_ROTATE(0,GroupMeshBlade3,1,_V(-27.068,0,-22.713),_V(0,1,0),(float)(-0.4*PI));
   static UINT GroupMeshBlade4[1] = {12};
   BladeOpen4 = new MGROUP_ROTATE(0,GroupMeshBlade4,1,_V(-35.335,0,0),_V(0,1,0),(float)(-0.4*PI));
   static UINT GroupMeshBlade5[1] = {11};
   BladeOpen5 = new MGROUP_ROTATE(0,GroupMeshBlade5,1,_V(-27.05,0,22.751),_V(0,1,0),(float)(-0.4*PI));
   static UINT GroupMeshBlade6[1] = {10};
   BladeOpen6 = new MGROUP_ROTATE(0,GroupMeshBlade6,1,_V(-6.136,0,34.798),_V(0,1,0),(float)(-0.4*PI));
   static UINT GroupMeshBlade7[1] = {9};
   BladeOpen7 = new MGROUP_ROTATE(0,GroupMeshBlade7,1,_V(17.668,0,30.567),_V(0,1,0),(float)(-0.4*PI));
   static UINT GroupMeshBlade8[1] = {8};
   BladeOpen8 = new MGROUP_ROTATE(0,GroupMeshBlade8,1,_V(33.204,0,12.085),_V(0,1,0),(float)(-0.4*PI));
   static UINT GroupMeshBlade9[1] = {7};
   BladeOpen9 = new MGROUP_ROTATE(0,GroupMeshBlade9,1,_V(33.204,0,-12.085),_V(0,1,0),(float)(-0.4*PI));
   uAnim_Blade = CreateAnimation (0.0);
   AddAnimationComponent (uAnim_Blade,0,1,BladeOpen1);
   AddAnimationComponent (uAnim_Blade,0,1,BladeOpen2);
   AddAnimationComponent (uAnim_Blade,0,1,BladeOpen3);
   AddAnimationComponent (uAnim_Blade,0,1,BladeOpen4);
   AddAnimationComponent (uAnim_Blade,0,1,BladeOpen5);
   AddAnimationComponent (uAnim_Blade,0,1,BladeOpen6);
   AddAnimationComponent (uAnim_Blade,0,1,BladeOpen7);
   AddAnimationComponent (uAnim_Blade,0,1,BladeOpen8);
   AddAnimationComponent (uAnim_Blade,0,1,BladeOpen9);

C'est un peu fastidieux ! Y'a-t-il un moyen de définir le point de référence pour la rotation par rapport au groupe ou est-il
possible de créer une fonction pour rassembler le tout en une seule composante ?

Pour ce cas là ça va, mais c'est pour les panneaux solaires que je m'inquiète, une première rotation suivie d'une translation
et d'une deuxième rotation, ça risque de faire beaucoup de composantes pour l'animation à définir ! Surtout si après je veux
implémenter le fait que les panneaux solaires suivent le mouvement du soleil !

Quelqu'un aurait-il une idée ?


---------------
Tom

Offline Drenake

  • Newbie
  • *
  • Posts: 18
  • Karma: 0
Reply #158 - 14 November 2009, 17:36:48
J'ai un petit probleme avec la super classe SaveRestoreScenario de Dan.

Elle est hyper pratique, mais je suis incapable de sauvegarder une variable Enum

Dans la declaration de ma classe dans mon header, j'ai:
Code: [Select]
enum DoorStatus {DOOR_CLOSED, DOOR_OPEN, DOOR_CLOSING, DOOR_OPENING} ArrayDep_status;
Je l'ai bien initialisé... En fais, tout marchais bien avec l'ancien systeme de sauvegarde, mais avec la classe de Dan, VC++
me sort l'erreur suivante a la compilation:

C2664: 'void SaveRestoreScenario::SavedVariable(int,int *)' : impossible de convertir le paramètre 2 de 'xxx::DoorStatus *' en 'int *'

Et quand je clique dessus il me renvoi à
Code: [Select]
Scn.SavedVariable(1, &ArrayDep_status);
Quelqu'un à une idée?



Message modifié ( 14-11-2009 17:58 )

« Last Edit: 14 November 2009, 18:52:14 by Drenake »
----------
- Even in the stupidest things you do, there's something to learn.
Moi

Offline DanSteph

  • Administrator
  • Legend
  • *****
  • Posts: 14999
  • Karma: 172
  • Hein, quoi !?
    • FsPassengers
Reply #159 - 14 November 2009, 18:21:49
Quote
Drenake a écrit:
Code: [Select]
Scn.SavedVariable(1, &ArrayDep_status);Quelqu'un à une idée?

Les enum c'est des int en taille il suffit de forcer le type pour que le compilo gueule plus.

Donc tu fais comme cela:

Code: [Select]
Scn.SavedVariable(1, (int*)&ArrayDep_status);
"(int*)" devant force le type.

a++

Dan

« Last Edit: 14 November 2009, 18:52:14 by DanSteph »

Offline Drenake

  • Newbie
  • *
  • Posts: 18
  • Karma: 0
Reply #160 - 14 November 2009, 18:48:13
AH! Je l'avais presque, j'avais essayé
Code: [Select]
..., (int)&ArrayDep_status);
J'imagine que le " * " c'est parce que la fonction utilise des pointeurs?!?

En tout cas, Merci oh grand maitre Dan :wor:


« Last Edit: 14 November 2009, 18:52:14 by Drenake »
----------
- Even in the stupidest things you do, there's something to learn.
Moi

Offline DanSteph

  • Administrator
  • Legend
  • *****
  • Posts: 14999
  • Karma: 172
  • Hein, quoi !?
    • FsPassengers
Reply #161 - 14 November 2009, 18:52:14
Exact il attend un pointeur de type int d'ou le "int*"

Mais y a pas de quoi, si on peut aider ;)

A++

Dan

« Last Edit: 14 November 2009, 18:52:14 by DanSteph »

Offline jeanus

  • Full Member
  • ***
  • Posts: 208
  • Country: France fr
  • Karma: 14
  • Il parait que je suis pénible ... mais heu !
Reply #162 - 06 October 2017, 17:21:10
Bonjour ?            n'ayant pas de réponse sur le forum,
                          je pose la question différemment ici, on ne sait jamais.

J'essaie de programmer un panneau pour mon addon, j'ai suivi le tuto et l'API-Guide mais je bloque d'entrée ...

Dans le clbkLoadPanel (int id), je met ça:

{
   HBITMAP hBmp = LoadBitmap (g_Param.hDLL, MAKEINTRESOURCE(IDB_BITMAP1));
   oapiRegisterPanelBackground (hBmp, PANEL_ATTACH_BOTTOM|PANEL_MOVEOUT_BOTTOM, 0xFFFFFF);
   return true;
}

ResEdit m'a créé un ".rc" à partir de mon dossier "Bitmaps" contenant mon "panel 2D" en Bmp 8 bits (1340x760) ainsi qu'un "resource.h" associé contenant :         #define IDB_BITMAP1                100

J'ai ajoouté "resource.h" et mon ".rc" dans ma "solution", je compile, je replace la DLL créée dans "Modules", je lance Orbiter 2010 P1, tout est là, sauf ... mon panel 2D   :worry: :wall:

QUESTION :
         Il est où le problème il est oùùù ? 

 :merci:

Jusqu'à aujourd'hui, je fis TOUT ce qu'il fallut que je fisse,
à partir de demain, je ne ferais QUE ce qu’il faudra que je fasse …