MFC et Directx8, erreurs de link incompréhensibles

MFC et Directx8, erreurs de link incompréhensibles - C++ - Programmation

Marsh Posté le 15-05-2003 à 19:13:00    

Bonjour, j'ai un problème qui semble simple, mais que je n'arrive pas à régler...
 
Je travaille sur un programme simple qui lit un fichier MIDI grâce aux fonctions de Directx8, il fonctionne très bien tout seul.
Mais lorsque je l'intègre à une interface MFC (qui compile très bien toute seule), ça compile bien mais j'ai les erreurs de link suivantes:

Citation :

II MFCDlg.obj : error LNK2001: unresolved external symbol _CLSID_DirectMusicSegment
II MFCDlg.obj : error LNK2001: unresolved external symbol _IID_IDirectMusicSegment8
II MFCDlg.obj : error LNK2001: unresolved external symbol _CLSID_DirectMusicPerformance
II MFCDlg.obj : error LNK2001: unresolved external symbol _IID_IDirectMusicPerformance8
II MFCDlg.obj : error LNK2001: unresolved external symbol _CLSID_DirectMusicLoader
II MFCDlg.obj : error LNK2001: unresolved external symbol _IID_IDirectMusicLoader8


 
Ces symboles sont définis dans dmusici.h que j'inclue bien dans le projet, et c'est pour ça que je ne comprends pas le problème...
(j'ai testé en enlevant le #include <dmusici.h>, j'ai 32 erreurs de compilation, donc ce .h est bien intégré au projet)
 
Des idées?


---------------
J'aime pas Apple...
Reply

Marsh Posté le 15-05-2003 à 19:13:00   

Reply

Marsh Posté le 15-05-2003 à 19:25:23    

t'as oublié de linker avec une lib

Reply

Marsh Posté le 15-05-2003 à 19:28:47    

chrisbk a écrit :

t'as oublié de linker avec une lib


 
C'est ce que j'ai pensé en effet, mais toutes les librairies sont inclues dans le projet pourtant!


---------------
J'aime pas Apple...
Reply

Marsh Posté le 15-05-2003 à 19:34:53    

liste voir ce que t'as utilisé comme lib ?

Reply

Marsh Posté le 15-05-2003 à 19:42:52    

Alors les .h utilisés sont les suivants:

Citation :


#include <windows.h>
#include <dmusicc.h>
#include <dmusici.h> //c'est dans celui-là que se trouvent les symboles qu'il ne reconnait pas


 
Pour les librairies, je n'en appelle pas par leur nom, mais j'ai spécifié le chemin des librairies dans les options du projet, catégorie "input", de même que je l'ai réglé dans les options de VC++.
 
J'ai loupé quelque chose?


---------------
J'aime pas Apple...
Reply

Marsh Posté le 15-05-2003 à 19:45:04    

je crois bien, si g bien compris ce que tu as fait  
d'inclure les libs
project->settings->linker->input
la tu mets les libs dont tu as besoin (regarde dans ton rep de dx\libs, doit avoir dmusic8.lib ou des trucs comme ca, tu balances)

Reply

Marsh Posté le 15-05-2003 à 19:50:42    

Y a pas de dmusic.lib, le seul .lib qui se reporte au son c'est dsound.lib...  
J'ai essayé en spécifiant directement ce nom au lieu du répertoire complet, mais ça ne change rien...
 
Mais comment ça se fait qu'un projet comprenant juste le programme jouant le MIDI fonctionne parfaitement, et que quand j'inclue ce programme à l'interface MFC ça plante comme ça???
 
En tout cas merci de m'aider!   :hello:


---------------
J'aime pas Apple...
Reply

Marsh Posté le 15-05-2003 à 19:53:25    

dmoguids.lib
dxguid.lib
 
roh pis tu mets tout pis vala [:dawa]
 
 
ben si il a pas les bonnes libs c normal que ca merde. si t'as le projet de l'autre programme, regarde quelles libs il inclue

Reply

Marsh Posté le 15-05-2003 à 19:54:55    

Alkor2001 a écrit :


Mais comment ça se fait qu'un projet comprenant juste le programme jouant le MIDI fonctionne parfaitement, et que quand j'inclue ce programme à l'interface MFC ça plante comme ça???
 


 
je serais un gro konar je dirais ke c'est la faute aux mfc, mais sur ce coup la je dirais plutot ke c'est toi ki rates fort.
 
regardes toutes les libs incluses dans ton projet d'origine (dans les propriétés du proj, pragma comment(), ou autres), y en a forcement une que t'as oublié de mettre ds le nouveau proj...

Reply

Marsh Posté le 15-05-2003 à 19:55:35    

Ok merci je teste ça... Mais le projet de l'autre programme c'est moi qui l'ai fait et je n'ai inclu aucune librairie directement...
J'ai juste spécifié le répertoire où elles étaient toutes, comme je l'ai fait pour le projet MFC...
 
EDIT: Même en spécifiant le nom de toutes les librairies manuellement, ça change rien... Vous êtes certains que le problème vient de là? Les symboles non reconnus appartiennent à un .h qui est bien inclu, qu'est ce que les .lib viennent faire la dedans? (oui je sais je ne connais pas grand chose en C++)


Message édité par Alkor2001 le 15-05-2003 à 20:00:39

---------------
J'aime pas Apple...
Reply

Marsh Posté le 15-05-2003 à 19:55:35   

Reply

Marsh Posté le 15-05-2003 à 21:19:48    

Konar a écrit :


 
regardes toutes les libs incluses dans ton projet d'origine (dans les propriétés du proj, pragma comment(), ou autres), y en a forcement une que t'as oublié de mettre ds le nouveau proj...


 
Tu pourrais préciser s'il te plait?


---------------
J'aime pas Apple...
Reply

Marsh Posté le 15-05-2003 à 21:48:00    

Bon bah en faisant une recherche sur pragma comment (que je connaissais pas) j'ai résolu mon problème!
 

Citation :

#pragma comment(lib, "dsound.lib" );
#pragma comment(lib, "dmoguids.lib" );
#pragma comment(lib, "dxguid.lib" );


 
Merci à tous!!!!    :jap:


---------------
J'aime pas Apple...
Reply

Marsh Posté le 23-05-2003 à 11:10:14    

Moi aussi j'ai le pb pour compiler du DirectX 5 sous VC++ 5.0. Pourtant, j'ai bien spécifié les chemins de DirectX (les includes et lib) en tête de liste, et ben ça compilait, mais ça linkait pas :(. Je vais aussi essayé la solution proposée.

Reply

Marsh Posté le 23-05-2003 à 14:05:31    

Et ça ne marche pas, même avec le pragma comment?
 
Et tu as bien réglé VC++ pour aller chercher les includes et les libs où il faut?
(c'est dans les options de VC++)


---------------
J'aime pas Apple...
Reply

Marsh Posté le 23-05-2003 à 14:50:53    

Ca peut paraître con, mais tu as bien ajouté les libs à linker dans la liste ("settings" sur ton projet, onglet link ... A mettre pour la config de debug ET la config de release !)
Il va pas les chercher tout seul, Visual ... :D


---------------
last.fm
Reply

Marsh Posté le 23-05-2003 à 14:59:29    

Ouep pareil c t la question que j allais pose.
C est bien beau de donner le path , mais si on lui dit pas qu elle lib linker il le devinera pas.
 
Perso ca marche sans pragma la compil en indiquant le path correctement et les libs que j ai besoin suivant les applis (d3D ou ddraw par exemple)

Reply

Marsh Posté le 23-05-2003 à 15:50:03    

Je crois que j'ai eu le même pb pour le link d'une application dshow..
En fait j'ai du compiler les basesclasses (c'est étrange mais vrai: elles sont dans samples, dshow) et linker avec les résultat.. :)
 
Bonne chance c très merdique..


---------------
Athlon64 s754 10*200MHz - R9800Pro - 512MB DDR200MHz - ZX6RR - Q2[SupOp] - Tutorial Video: multilangues, multisstitres
Reply

Marsh Posté le 23-05-2003 à 15:53:06    

H4dd3R a écrit :

Je crois que j'ai eu le même pb pour le link d'une application dshow..
En fait j'ai du compiler les basesclasses (c'est étrange mais vrai: elles sont dans samples, dshow) et linker avec les résultat.. :)
 
Bonne chance c très merdique..


 
Pareil ... Mais en fait, apparamment, ils supposent qu'on peut refaire tout ce qui se trouve dans les baseclasses ...


---------------
last.fm
Reply

Marsh Posté le 25-05-2003 à 14:45:08    

Bizarrement, j'arrivais à compiler un prgm directX mais pas celui que j'étais en train de faire. Une des principales différences entre les 2 codes, c'était que le mien disposait un fichier resource (la fiche principale de mon appli + une icône). Je sais pas si c'est ça qui empêchait de compiler mais grâce à pragma comment, ça marche maintenant :) Merci...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed