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

C++ Discussion :

Compilation avec DLL


Sujet :

C++

  1. #1
    Membre du Club
    Inscrit en
    Janvier 2006
    Messages
    173
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 173
    Points : 42
    Points
    42
    Par défaut Compilation avec DLL
    Bonjour,

    J'ai un très gros projet incluant notamment 2 DLLs qui compile et linke très bien.
    Je viens de lui ajouter une DLL qui compile et linke très bien.
    Lorsque j'assemble le tout, VC++ me déclare 108 erreurs dans un .cpp du projet principal et dans des cpp de la nouvelle DLL.

    Je ne vois pas pourquoi.

    Avez vous des idées ?


    Merci à tous

  2. #2
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 621
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 621
    Points : 188 600
    Points
    188 600
    Par défaut


    Citation Envoyé par mulfycrowh Voir le message
    Avez vous des idées ?
    Sur quoi ? On ne sait rien sur ton problème ! Pourrais-tu nous donner les messages d'erreur ? On devrait pouvoir commencer à pouvoir t'aider avec ça.
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  3. #3
    Membre du Club
    Inscrit en
    Janvier 2006
    Messages
    173
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 173
    Points : 42
    Points
    42
    Par défaut
    Voici un extrait des erreurs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    1>d:\t4u project\t4u dlls\t4udll_3d_engine\t4udll_3d_engine.h(22) : error C2143: syntax error : missing ';' before '*'
    1>d:\t4u project\t4u dlls\t4udll_3d_engine\t4udll_3d_engine.h(22) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
    1>d:\t4u project\t4u dlls\t4udll_3d_engine\t4udll_3d_engine.h(22) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
    1>d:\t4u project\t4u dlls\t4udll_3d_engine\t4udll_3d_engine.h(23) : error C2143: syntax error : missing ';' before '*'
    1>d:\t4u project\t4u dlls\t4udll_3d_engine\t4udll_3d_engine.h(23) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
    1>d:\t4u project\t4u dlls\t4udll_3d_engine\t4udll_3d_engine.h(23) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
    1>d:\t4u project\t4u dlls\t4udll_3d_engine\t4udll_3d_engine.h(25) : error C2143: syntax error : missing ';' before '*'
    1>d:\t4u project\t4u dlls\t4udll_3d_engine\t4udll_3d_engine.h(25) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
    1>d:\t4u project\t4u dlls\t4udll_3d_engine\t4udll_3d_engine.h(25) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
     
    1>d:\t4u project\t4u project\turn_for_you.cpp(35) : error C2143: syntax error : missing ';' before '{'
    1>d:\t4u project\t4u project\turn_for_you.cpp(43) : error C2143: syntax error : missing ';' before '}'
    1>d:\t4u project\t4u project\turn_for_you.cpp(46) : error C2143: syntax error : missing ';' before '{'
    1>d:\t4u project\t4u project\turn_for_you.cpp(47) : error C2143: syntax error : missing ';' before '}'
    1>d:\t4u project\t4u project\turn_for_you.cpp(54) : error C2143: syntax error : missing ';' before '{'
    1>d:\t4u project\t4u project\turn_for_you.cpp(56) : error C2143: syntax error : missing ';' before '}'
    1>d:\t4u project\t4u project\turn_for_you.cpp(59) : error C2143: syntax error : missing ';' before '{'
    1>d:\t4u project\t4u project\turn_for_you.cpp(61) : error C2143: syntax error : missing ';' before '}'
    1>d:\t4u project\t4u project\turn_for_you.cpp(64) : error C2143: syntax error : missing ';' before '{'
    1>d:\t4u project\t4u project\turn_for_you.cpp(66) : error C2143: syntax error : missing ';' before '}'
    1>d:\t4u project\t4u project\turn_for_you.cpp(69) : error C2143: syntax error : missing ';' before '{'
    1>d:\t4u project\t4u project\turn_for_you.cpp(71) : error C2143: syntax error : missing ';' before '}'
    1>d:\t4u project\t4u project\turn_for_you.cpp(74) : error C2143: syntax error : missing ';' before '{'
    1>d:\t4u project\t4u project\turn_for_you.cpp(76) : error C2143: syntax error : missing ';' before '}'
    1>d:\t4u project\t4u project\turn_for_you.cpp(79) : error C2143: syntax error : missing ';' before '{'
    t4udll_3d_engine.h est un header de la DLL ajoutée
    turn_for_you.cpp est dans le projet principal.
    Ce projet principal compile très bien avant que la nouvelle DLL soit ajoutée.
    Je compile très bien la DLL seule.

  4. #4
    Nouveau membre du Club
    Inscrit en
    Septembre 2004
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 28
    Points : 28
    Points
    28
    Par défaut
    Ta DLL utilise certainement des choses (genre classe d'une autre dll ou fichier .h) qui ne sont pas déclarées dans ton exe principal.

  5. #5
    Membre du Club
    Inscrit en
    Janvier 2006
    Messages
    173
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 173
    Points : 42
    Points
    42
    Par défaut
    Bonjour,

    Les 108 erreurs disparaissent lorsque je supprime dans le projet principal, dans turn_for_you.cpp, #include "T4UDLL_3D_ENGINE.h".
    Je ne comprends pas pourquoi cet include induit des erreurs sur turn_for_you.cpp alors que celui-ci n'appartient pas à la DLL, de plus des erreurs de compil

  6. #6
    Expert confirmé Avatar de fregolo52
    Homme Profil pro
    Développeur C
    Inscrit en
    Août 2004
    Messages
    2 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Août 2004
    Messages : 2 364
    Points : 5 378
    Points
    5 378
    Par défaut
    Salut

    As-tu regardé l'aide sur tes erreurs ? Style C4430.

    Peux-tu nous mettre le contenu du .h ? (au moins les 25 premières lignes)
    Et les ligne 30 à 40 du cpp ?

  7. #7
    screetch
    Invité(e)
    Par défaut
    T4UDLL_3D_ENGINE.h a sans doute besoin qu'un autre fichier .h soit inclus avant. A la ligne 22 de ce fichier il y a sans doute un type qui est utilisé, et pour ce type il faut inclure un autre en-tête.

  8. #8
    Membre du Club
    Inscrit en
    Janvier 2006
    Messages
    173
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 173
    Points : 42
    Points
    42
    Par défaut
    Bonjour à tous,

    Voici le t4udll_3d_engine.h :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    #include <string>
    #include <vector>
     
    #define _3D_ENGINE_API __declspec(dllexport)
     
    using namespace std;
     
    /****************************************
    * Class CT4UDLL_3D_ENGINE               *
    * Includes the 3D objects of the scene  *
    ****************************************/
    class _3D_ENGINE_API CT4UDLL_3D_ENGINE					
    {
    private:
     
    	string							sCurrentDirectory;
    	LPDIRECT3DDEVICE9				m_pd3dDevice;
    	LPDIRECT3DSURFACE9				m_pBackBufferSurface;
    	UINT                            inScreenWidth;          // Width of the scene
    	UINT                            inScreenHeight;         // Height of the scene
     
    	CMainCamera*					m_pMainCamera;			// The main camera for navigating the scene
    	CCamera*						m_pLightCamera;			// A virtual camera placed on lights position 
    	                                                        // For rendering to cubic shadow map
    	CShadowEffect*					m_pShadowEffect;		// Effect for cubic shadow mapping
    	D3DXVECTOR3						m_LightPosition;
     
    	vector<CMesh*>					m_p3DObject;            // 3D Objects in the scene
        CMesh*                          m_pLight;               // Light in the scene
    	int                             Nb_3DObjects;           // Excluding the light
     
    	//	The cubic shadow map and 6 face surfaces of it
    	LPDIRECT3DCUBETEXTURE9			cubicShadowMap;
    	LPDIRECT3DSURFACE9				depthCubeFacePX;
    	LPDIRECT3DSURFACE9				depthCubeFacePY;
    	LPDIRECT3DSURFACE9				depthCubeFacePZ;
    	LPDIRECT3DSURFACE9				depthCubeFaceNX;
    	LPDIRECT3DSURFACE9				depthCubeFaceNY;
    	LPDIRECT3DSURFACE9              depthCubeFaceNZ;
     
    	D3DXVECTOR3						m_PositiveLookX;
    	D3DXVECTOR3						m_PositiveLookY;
    	D3DXVECTOR3						m_PositiveLookZ;
    	D3DXVECTOR3						m_NegativeLookX;
    	D3DXVECTOR3						m_NegativeLookY;
    	D3DXVECTOR3						m_NegativeLookZ;
     
    	//helper functions for setting up the light's camera for rendering to the depth map surface
    	void							CreateCamForPositiveX();
    	void							CreateCamForNegativeX();
    	void							CreateCamForPositiveY();
    	void							CreateCamForNegativeY();
    	void							CreateCamForPositiveZ();
    	void							CreateCamForNegativeZ();
     
    	void							OnFrameMove(DWORD inTimeDelta);
     
    	//helper functions for rendering the objects to a specified depth cube face
    	void							RenderDepthToCubeFace(LPDIRECT3DSURFACE9 inCubeFaceSurface);
    	//helper function for filling six faces of depth cube map
    	void							FillCubicShadowMap();
    	//helper function for rendering the scene using cubic shadow map
    	void							RenderSceneWithShadowMap();
     
    public:
     
    	// singleton stuff
    	static CT4UDLL_3D_ENGINE&       getInstance( const string& _CurrentDirectory, const LPDIRECT3DDEVICE9 _pd3dDevice,
                                                     const LPDIRECT3DSURFACE9 _pBackBufferSurface, UINT _inScreenWidth, 
    												 UINT _inScreenHeight);
     	CT4UDLL_3D_ENGINE( const string& _CurrentDirectory, const LPDIRECT3DDEVICE9 _pd3dDevice,
                           const LPDIRECT3DSURFACE9 _pBackBufferSurface, UINT _inScreenWidth, UINT _inScreenHeight);
    	~CT4UDLL_3D_ENGINE(void);
     
    	int                             Read_SceneObjects( const string& sSceneFileName);
    	int 							Initialize( const string& sSceneFileName);
    	void							Render_3DScene(DWORD inTimeDelta);
    	void							CleanUp();
    };
    La première erreur de compil vise le pointeur classe CMainCamera* car non vu.
    La compil de la DLL se déroule sans erreur

  9. #9
    Expert confirmé Avatar de fregolo52
    Homme Profil pro
    Développeur C
    Inscrit en
    Août 2004
    Messages
    2 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Août 2004
    Messages : 2 364
    Points : 5 378
    Points
    5 378
    Par défaut
    C'est plus clair !!!

    ton pb est lié à l'ordre des includes dans ton cpp.
    En gros tu fais un include de t4udll_3d_engine.h avant de faire l'include du fichier qui contient la déclaration de CMainCamera.

  10. #10
    Membre du Club
    Inscrit en
    Janvier 2006
    Messages
    173
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 173
    Points : 42
    Points
    42
    Par défaut
    oui, cela je peux le comprendre mais pourquoi je retrouve des dizaines d'erreur dans le cpp qui inclut t4udll_3d_engine.h alors que ce cpp n'est pas dans la dll ?

  11. #11
    Expert confirmé Avatar de fregolo52
    Homme Profil pro
    Développeur C
    Inscrit en
    Août 2004
    Messages
    2 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Août 2004
    Messages : 2 364
    Points : 5 378
    Points
    5 378
    Par défaut
    euh ...

    Je crois que tu as un pb de compréhension à propos de la compilation et du link entre plusieurs projets : (je ne vois pas le rapport
    ce cpp n'est pas dans la dll
    )

    Tu compiles ton exe, donc c'est le cpp de l'exe que tu compiles mais tu utilises des .h de la dll.

Discussions similaires

  1. Introduire les dll en compilant avec Visual C++
    Par NoritakaRomain dans le forum Windows
    Réponses: 14
    Dernier message: 15/05/2007, 16h03
  2. petit prb de compilation de dll avec visual express
    Par niamura dans le forum VC++ .NET
    Réponses: 5
    Dernier message: 02/04/2007, 16h38
  3. Réponses: 12
    Dernier message: 01/03/2007, 11h28
  4. Linker avec une DLL compilée avec MSVC6
    Par Neilos dans le forum C++Builder
    Réponses: 4
    Dernier message: 26/08/2006, 21h46
  5. [VS 2005] Compilation avec DLL impossible
    Par Julaie95 dans le forum MFC
    Réponses: 16
    Dernier message: 19/05/2006, 10h42

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