begin process at 2012 05 30 05:38:49
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Windows

 > 

Autre

 > 

Problèmes de headers avec DLL malgré compilation ok


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Problèmes de headers avec DLL malgré compilation ok

dimanche 26 novembre 2006 à 00:03:51 | Problèmes de headers avec DLL malgré compilation ok

Galmiza

Salut,

J'ai un gros projet qui utlise des dll persos (dll pleines de classes).
ET j'ai un problème avec ma dernière dll.
Elle se compile nickel.
Je met la lib, la dll et TOUS les headers (nécessaires à la compilation de la dll) avec le programme principal, pas de pb, il compile se lance et ne bugge pas :D.
Ensuite je vire les headers, supprime les membres publics des classes de la dll, supprime plein de fonctions, bref, ne laisse que le strict minimum pour que la compilation réussi.
C'est le cas, compilation ok, le programme se lance, mais là, crash dès le premier clic ou lors de la sortie !

Comment ça se fait ?
Mon programme compilé n'est pas censé être exactement le même malgré ce que je fais avec les headers tant que la compilation réussi ?

J'aimerais avoir vos avis.

Merci
dimanche 26 novembre 2006 à 00:30:59 | Re : Problèmes de headers avec DLL malgré compilation ok

Galmiza

J'en sais un peu plus sur la cause du crash.
Après plusieurs tests, j'ai vu que le programme commence à crasher quand je retire certains attributs à la classe CScene (la classe CScene est dans la dll, mais le programme a besoin de son header, c'est ce header que je veux réduire au minimum).

Ci-dessous les attributs 'private' dans le fichier "Scene.h".
Ceux avec // devant ont pu être retires sans faire crasher le programme.
Les autres ne sont pas desactivés sinon crash.

Il n'y a aucune raison que ça bugge.
Avez-vous eu un problème similaire ?

class MY_DLL CScene  
{
private:

// Engines
// CPhysic* m_pPhysic;
// CDirect3D* m_pDirect3D;

// Entities
CObject** m_ppObjects;
CGeometry** m_ppGeometries;
CMaterial** m_ppMaterials;

// Parser
CParser* m_pParser;

DWORD m_dwNumObjects;
DWORD m_dwNumGeometries;
DWORD m_dwNumMaterials;

// Sort for Z-buffer
// CObject** m_ppZSortObjects;
// float* m_pDistances;
dimanche 26 novembre 2006 à 01:40:57 | Re : Problèmes de headers avec DLL malgré compilation ok

Ombitious_Developper

Salut:

Je ne pense que le bug est dû à un "fichier" apparement tu utilises beaucoup de pointeurs (Et c'est là que viennent la majorité des bugs), essayes de tester ton programmes en mode console avant de le mettre en DLL.

Bonne chance ...
dimanche 26 novembre 2006 à 14:41:08 | Re : Problèmes de headers avec DLL malgré compilation ok

Galmiza

Je ne pense pas que le problème vienne de pointeurs (il y en a beaucoup plus dans les autres classes ;)), car le programme fonctionne parfaitement lorsque tous les headers sont là.

En fait j'ai un seul fichier cpp, main.cpp.
Les autres fichiers sont les headers des classes contenues dans les dll (pour que le compilateur reconnaisse les objects).
Pour le link, il y a les .lib.
Le programme fonctionne et ne plante pas quand tous les headers sont là.
(donc aucun bug du code)

Normalement, je peux supprimer des attributs et des fonctions des fichiers headers sans changer le resultat de la compilation, donc sans changer le programme. Ceci ne revient pas à changer le code car le code est figé dans les dll.
Or la ces modifications conduisent à un crash.
dimanche 26 novembre 2006 à 16:20:48 | Re : Problèmes de headers avec DLL malgré compilation ok

yann_lo_san

As tu essayé de faire les déclarations de classe "en avant" sur les objets qui plantent ?

DLL_EXPORT class CPhysic;
DLL_EXPORT class CDirectD;

class DLL_EXPORT CScene
{
};

Les fonctions virtuelles exportées doivent etre visible du client (inline)

dimanche 26 novembre 2006 à 16:23:13 | Re : Problèmes de headers avec DLL malgré compilation ok

yann_lo_san

Après relecture de ton post :
En fait ça serait plutôt un problème d'#include.

dimanche 26 novembre 2006 à 16:39:29 | Re : Problèmes de headers avec DLL malgré compilation ok

Galmiza

Salut,

Si je change:
CObject** m_ppObjects;
CGeometry** m_ppGeometries;
CMaterial** m_ppMaterials;
en:
CObject bonjour;
CGeometry**** au_revoir;
CMaterial******** salut;

ça compile, et ça ne plante pas.
Je ne sais vraiment pas quoi faire .

A terme, je veux supprimer un max de fichiers headers (ce qui sont inutiles pour le compilo).
Mais c'est mal parti .

dimanche 26 novembre 2006 à 16:45:37 | Re : Problèmes de headers avec DLL malgré compilation ok

yann_lo_san

Et avec la syntaxe : 
CObject* m_ppObjects[];   // ?? 

dimanche 26 novembre 2006 à 16:50:22 | Re : Problèmes de headers avec DLL malgré compilation ok

Galmiza

Dans ce cas le compilo rale.
Mais je peux mettre ce que je veux sinon et ça passera tant que je ne supprime pas la ligne.
Apparement le programme plante juste avant que le classe scene soit détruite cad entre la derniere ligne de code de son destructeur et la ligne qui suit sa demande de destruction.
A quoi ça peut être dû ?

dimanche 26 novembre 2006 à 16:54:15 | Re : Problèmes de headers avec DLL malgré compilation ok

yann_lo_san

Rebuild a chaque fois le .LIB, en as tu peut etre plusieurs versions ?


1 2

Cette discussion est classée dans : programme, dll, ok, compilation, headers


Répondre à ce message

Sujets en rapport avec ce message

Pb de compilation [ par Cyberboy2054 ] Salut J' ai un piti problème de compilation en C++Quand j' ai terminé mon programme (un aplication console)je teste mon programme depuis le compilateu problème de lib et de dll... [ par Raoul12 ] je programme sous vc++6 et j'aimerais savoir s'il est possible de faire appel à une dll externe à un programme principal sans avoir à recompiler le pr DLL [ par amosc ] Je dois faire un programme (visual c++) avec les DLL d un lecteur carte a puce, et je ne sais pas comment faire pouvez vous m aider a inclure les DLL C++ && DLL ==> CGI [ par amosc ] salut cppfrance.comVoila j ai un programme en c++ qui appel une DLL, ce programme pilote un lecteur carte a puce, je voulai l incorporer dans une pag compilation c++ sous linux [ par marco2009 ] voila je commence a programmer en cpp et lorsque j'essaye de compile avec la console en utilisant gcc ca marche pour les programme ecrit en c mais po MFC42D.DLL [ par oRTEEZ ] Bonjour a tous, Voila j'ai cree un programme sous VC++ 6.0 en utilisant les MFC. Il marche tres bien.Mais lorsque je veux faire fonctionner le progra DLL et fichier de VCL [ par Siriusgalaxie26 ] SiriusJ'ai un problème de débutant : Dès qu je compile un programme avec Broland C++ Builder, Ce programme marche sur mon ordi, mais pas sur un autre. SVP - ULTRA URGENT - Prob Distribution prog Win98 [ par marcel6566 ] Bonjour,J'ai créé un programme d'aide à la lecture pour 4 classes de CP dans une école primaire. Mon programme est réalisé sous XP avec VC++ version 6 pb de lecture de fichier avec une DLL [ par loic81 ] J'ai fait un programme en C sous vc++6 qui lit un dans un fichier (en trottre) en utilsant la méthode des streams (fonction fread...).Lorsque je le c Question DLL [ par LordBob ] Bonjours a tous,en fait je voudrais juste savoir s'il été possible d'utiliser une DLL aussi bien avec un programme fonctionnant en mode console qu'un


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,515 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales