PDA

Voir la version complète : Erreurs de links


nic58
21/04/2005, 10h05
Salut,

Je voudrais utiliser SxDL pour un projet, mais pas moyen de compiler quoique ce soit.

J'essaye en ce moment avec ce bout de code :

Fichier test_1.h

#include "sxdl.h"

class CGame : public SxDL
{
public:
CGame() {};
virtual ~CGame (void) {};

virtual void OnStartup();
};

Fichier test_1.cpp

#include "test_1.h"

INT WINAPI WinMain(HINSTANCE hInst, HINSTANCE, LPSTR, INT)
{
CGame g_Game;

return g_Game.FrameworkRun(hInst);
}

void CGame::OnStartup()
{
FrameworkName(TEXT("Hello SxDL !"));
}


J'ai suivit pas à pas l'installtion de SxDL.
Le SDK de directx (la dernière version, april 2005) est installé et ajouté à visual studio .NET (version 2003).
Les libraires sont également ajouté (dans "dépendances supplémentaires").
J'ai passer quelques heures à essayer de corriger ça, mais toujours rien ...

Voici un extrait des erreurs (il y en a 40) :

test_1.obj : error LNK2019: symbole externe non résolu "public: int __thiscall SxDL::FrameworkRun(struct HINSTANCE__ *)" (?FrameworkRun@SxDL@@QAEHPAUHINSTANCE__@@@Z) référencé dans la fonction _WinMain@16
test_1.obj : error LNK2001: symbole externe non résolu "public: virtual void __thiscall SxDL::OnBug(char *)" (?OnBug@SxDL@@UAEXPAD@Z)
test_1.obj : error LNK2001: symbole externe non résolu "public: virtual void __thiscall SxDL::OnMissingMedia(char *)" (?OnMissingMedia@SxDL@@UAEXPAD@Z)
test_1.obj : error LNK2001: symbole externe non résolu "private: virtual void __thiscall SxDL::Pause(bool)" (?Pause@SxDL@@EAEX_N@Z)


Comment faire pour les résoudre ? merci. :)

Lenolian
21/04/2005, 12h09
Si tu utilises le SDK d'avril, il faut aussi que tu installes "à la main" les libs et includes de DShow que tu pourras téléchargement sur msdn (SDk - February 2005 - Extras).

Sinon dans ton code je crois qu'il faut que tu déclares ta variable game en dehors du winmain.


CGame g_Game;

INT WINAPI WinMain(HINSTANCE hInst, HINSTANCE, LPSTR, INT)
{
return g_Game.FrameworkRun(hInst);
}


voilà la liste des libs à inclure :


..\LibSxDL\Debug\LibSxDL.lib // répertoire à définir selon les paramètres de ton projet
dsound.lib
d3d9.lib
d3dx9.lib
dinput8.lib
dxguid.lib
d3dxof.lib
dxerr9.lib
winmm.lib
winspool.lib
advapi32.lib
user32.lib
gdi32.lib
ole32.lib
oleaut32.lib
uuid.lib
comctl32.lib
comdlg32.lib

Mickael
21/04/2005, 13h00
Je me suis toujours demandé pourquoi vous faite ca :


INT WINAPI WinMain(HINSTANCE hInst, HINSTANCE, LPSTR, INT)
{
CGame g_Game;

return g_Game.FrameworkRun(hInst);
}


Perso j'ai toujours déclarer en dehors moi :00000032:

nic58
21/04/2005, 16h08
J'ai fais ce que tu m'as dit Lenolian.
Mais j'ai toujours les même erreurs ...

Configuration de visual studio :

Fichiers includes
C:\DXSDK\Include
C:\Program Files\Microsoft DirectX 9.0 SDK (April 2005)\Include
C:\Extras\DirectShow\Include

Fichiers bibliothèques
C:\DXSDK\Lib
C:\Program Files\Microsoft DirectX 9.0 SDK (April 2005)\Lib\x86
C:\Extras\DirectShow\Lib
C:\Documents and Settings\nicolas\Mes documents\Visual Studio Projects\CnC-Project\LibSxDL\Debug // pour LibSxDL.lib


Propriétés du projet:

Onglet C/C++
.\SxDL // Ce répertoire est dans le même que le projet

Editeur de liens / dépendances supplémentaires
dsound.lib
d3d9.lib
d3dx9.lib
dinput8.lib
dxguid.lib
d3dxof.lib
dxerr9.lib
winmm.lib
winspool.lib
advapi32.lib
user32.lib
gdi32.lib
ole32.lib
oleaut32.lib
uuid.lib
comctl32.lib
comdlg32.lib
LibSxDL.lib // Que j'ai pas ajoutée car je ne l'ai pas !? Pourtant j'ai télécharger la dernière version de SxDL


Voila :00000010:

Merci de ton aide.

Mickael
21/04/2005, 16h16
Si tu n'as pas LibSxDL.lib ca viens de la tes erreurs de link .

nic58
21/04/2005, 17h27
Effectivement ...
Je l'ai compilé et rajouté au projet, maintenant ça marche niquel !
Merci à tous les deux :)

EDIT
Je me suis rendu compte que j'ai environ 8 FPS seulement ??
Ca m'étonnerais que ça soit normal.

Mickael
21/04/2005, 17h39
Si tu as 8 FPS pour une fentre qui affiche rien du tous c'est un probleme oui :00000032:

Regarde ton pilote de ta carte graphique si il est a jour .

nic58
21/04/2005, 19h38
Bah, vu que j'ai une ATI, j'ai mis les derniers drivers Omega (http://www.omegadrivers.net/).
Sinon certains jeux plantent (vive les drivers officiels d'ATI ...).

Ca pourrait venir de ça ?

Lenolian
21/04/2005, 19h40
C'est quoi comme carte exactement?

nic58
21/04/2005, 19h42
C'est une ATI Radeon Mobility 9600 (128mo).

Lenolian
21/04/2005, 19h48
Tu ne devrais pas avoir de problème à avoir beaucoup plus, moi j'ai 380fps avec une geforce 2 TI.

Qu'est ce qui est écrit quand tu appuies sur F11 pendant l'éxecution de SxDL ? Est-ce que ca correspond bien à ta carte ?

nic58
21/04/2005, 19h53
140.msf, 7.0fps, 800x600, X8R8G8B8 (D16) - xx - HAL (pure hw vp): RADEON Mobility 9600 - SxDL 2.4 - .....


Voila ce qui est écrit. :)


Le forum il prend que les formats horaires de la forme XX:04 ? Regardez les heures où on poste, à chaque fois c'est à XX:04
edit MrCool: excellente remarque, on se demandait d'où venait les problèmes d'heure... Je vais regarder ça!