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

Développement 2D, 3D et Jeux Discussion :

Pb de compilation de l'initialisation de Direct3D


Sujet :

Développement 2D, 3D et Jeux

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 58
    Par défaut Pb de compilation de l'initialisation de Direct3D
    Salut tous le monde,
    quelqu'un peut m'aider a resoudre ce probleme svp ?
    j'ai compilé le code ci -essous et une erreur d'edition de lien que je n'ai pas pu resoudre :
    merci a tous et bon dev.

    Apres compilation :

    1>------ Début de la génération*: Projet*: D3D, Configuration*: Debug Win32 ------
    1>Compilation en cours...
    1>3D3.cpp
    1>Édition des liens en cours...
    1>3D3.obj : error LNK2019: symbole externe non résolu "int __cdecl d3d::EnterMsgLoop(bool (__cdecl*)(float))" (?EnterMsgLoop@d3d@@YAHP6A_NM@Z@Z) référencé dans la fonction _WinMain@16
    1>3D3.obj : error LNK2019: symbole externe non résolu "bool __cdecl d3d::InitD3D(struct HINSTANCE__ *,int,int,bool,enum _D3DDEVTYPE,struct IDirect3DDevice9 * *)" (?InitD3D@d3d@@YA_NPAUHINSTANCE__@@HH_NW4_D3DDEVTYPE@@PAPAUIDirect3DDevice9@@@Z) référencé dans la fonction _WinMain@16
    1>C:\Documents and Settings\Jonas\Mes documents\Visual Studio 2005\Projects\D3D\Debug\D3D.exe : fatal error LNK1120: 2 externes non résolus
    1>Temps de génération 0:02
    1>Le journal de génération a été enregistré à l'emplacement "file://c:\Documents and Settings\Jonas\Mes documents\Visual Studio 2005\Projects\D3D\D3D\Debug\BuildLog.htm"
    1>D3D - 3 erreur(s), 0 avertissement(s)
    ========== Génération*: 0 a réussi, 1 a échoué, 0 mis à jour, 0 a été ignoré ==========
    j'utilise Visual Studio 2005 et Directx9.


    le code :

    #include "d3dUtility.h"

    IDirect3DDevice9 * Device = 0;

    bool Setup()
    {
    return true;
    }

    void Cleanup()
    {

    }

    bool Display(float timeDelta)
    {
    if(Device)
    {
    Device->Clear(0, 0, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, //clears backbuffer and depth/stencil buffer to black
    0x00000000, 1.0f, 0);

    Device->Present(0, 0, 0, 0); // present backbuffer

    }
    return true;
    }

    //windows procedure method

    LRESULT CALLBACK d3d::WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
    {

    switch (msg)
    {
    case WM_DESTROY:
    :ostQuitMessage(0);
    break;

    case WM_KEYDOWN:
    if (wParam == VK_ESCAPE)
    {
    :estroyWindow(hwnd);
    break;
    }
    }
    return :efWindowProc(hwnd, msg, wParam, lParam);
    }

    //WinMain()

    int WINAPI WinMain (HINSTANCE hinstance,
    HINSTANCE prevInstance,
    PSTR cmdLine,
    int showCmd)

    {
    if(!d3d::InitD3D(hinstance,
    800, 600, true, D3DDEVTYPE_HAL, &Device))
    {
    ::MessageBox(0, TEXT("InitD3D() - FAILED"), 0, 0);
    return 0;
    }

    if (!Setup())
    {
    ::MessageBox(0, TEXT("Setup() - FAILED"), 0, 0);
    return 0;
    }

    d3d::EnterMsgLoop(Display);

    Cleanup();

    Device->Release();

    return 0;
    }



    d3dUtility.h

    #include <d3dx9.h>
    #include <d3d9.h>
    #include <string>

    namespace d3d
    {
    bool InitD3D(
    HINSTANCE hInstance, // application instance
    int width, int height, // back buffer dimensions
    bool windowed, //windows (true) or full screen (false)

    D3DDEVTYPE deviceType, //HAL or REF
    IDirect3DDevice9** device); //created device

    //application message loop

    int EnterMsgLoop(
    bool (*ptr_display)(float timeDelta));

    //callback function declaration

    LRESULT CALLBACK WndProc(
    HWND hwnd,
    UINT msg,
    WPARAM wParam,
    LPARAM lParam);

    template<class T> void Release(T t)
    {
    if (t)
    {
    t->Release();
    t = 0;
    }
    }

    template<class T> void Delete(T t)
    {
    if (t)
    {
    t = 0;
    }
    }


    }

  2. #2
    Membre Expert

    Profil pro
    Programmeur
    Inscrit en
    Août 2002
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Programmeur

    Informations forums :
    Inscription : Août 2002
    Messages : 1 091
    Par défaut
    Il faut tout simplement spécifier la librairie qui contient les fonctions EnterMsgLoop et InitD3D, lorsque tu appelles l'éditeur de lien.

    C'est dans projets->propriétés->linker->input->additional dependencies.

    Réfères toi à la doc de ton compilateur.

    LeGreg

    Mon site web | Mon blog | Mes photos | Groupe USA
    > BONJOUR, JE SUIS NOUVEAU SUR CE FORUM
    > presse la touche caps lock, stp
    > OH.. MERCI C EST BEAUCOUP PLUS FACILE COMME CA

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Erreur d'initialisation à la compilation
    Par Brut4lity dans le forum Débuter
    Réponses: 3
    Dernier message: 05/04/2012, 19h34
  2. Réponses: 14
    Dernier message: 16/07/2008, 17h05
  3. Réponses: 7
    Dernier message: 01/04/2006, 18h05
  4. Initialiser un container associatif à la compilation
    Par julien.sagnard dans le forum C++
    Réponses: 2
    Dernier message: 30/09/2005, 11h09
  5. Réponses: 1
    Dernier message: 27/05/2002, 01h44

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