Seuls les membres ayant 30 points peuvent parler sur le chat.

Forum Casio - Projets de programmation


Index du Forum » Projets de programmation » [Résolu] Could not open source file
PalraHors ligneMembrePoints: 276 Défis: 0 Message

[Résolu] Could not open source file

Posté le 16/05/2014 14:10

Bonjour à tous !

J'essayais de coder une petite librairie d'affichage en 3D, qui fonctionnait jusque là très bien. Cependant, je ne sais pas ce qui c'est passé, mais je me suis mis à avoir cette erreur :
..\render/Camera.h(4) : C5005 (F) Could not open source file "math/Vector.h"

Je ne vois pas du tout en qui ce fichier ne pourrait pas être accessible. J'ai mis le projet sur Github afin que vous puissiez voir l'arborescence des fichiers : https://github.com/palra/CasGL

Dans le SDK, j'ai mis dans la liste des fichiers à compiler uniquement les fichiers *.c, puisque j'ai lu quelque part dans le forum qu'inclure les fichiers *.h provoquait des bugs. Ai-je bien fait ?

Merci de m'avoir lu !


Pages : 1, 2Suivante
AlphacreatorHors ligneMembrePoints: 1464 Défis: 43 Message

Citer : Posté le 16/05/2014 14:33 | #


Personnellement j'inclus toujours mes .h dans le SDK et je n'ai toujours pas eut d'erreur, essaye de les inclure, ça m'arrivait aussi ce genre d'erreurs avant d'inclure mes .h
PalraHors ligneMembrePoints: 276 Défis: 0 Message

Citer : Posté le 16/05/2014 16:03 | #


    WARNING: The following dependant file(s) do not exist: "src\lib\MonochromeLib.h" "src\render\Camera.h" "src\render\Vertex.h" "src\render\math\Matrix.h" "src\render\math\Vector.h". Line: 87
    WARNING: The following dependant file(s) do not exist: "src\lib\MonochromeLib.h" "src\render\Camera.h" "src\render\Vertex.h" "src\render\math\Matrix.h" "src\render\math\Vector.h". Line: 104
    WARNING: The following dependant file(s) do not exist: "src\lib\MonochromeLib.h" "src\render\Camera.h" "src\render\Vertex.h" "src\render\math\Matrix.h" "src\render\math\Vector.h". Line: 121
    WARNING: The following dependant file(s) do not exist: "src\lib\MonochromeLib.h" "src\render\Camera.h" "src\render\Vertex.h" "src\render\math\Matrix.h" "src\render\math\Vector.h". Line: 138
"C:\CASIO\fx-9860GSDK\OS\SH\bin\shc.exe" -subcommand=C:\Users\LOC~1\AppData\Local\Temp\hmkF8F9.tmp
D:\Documents\CASIO\Codes\3D\src\render/Camera.h(4) : C5005 (F) Could not open source file "math/Vector.h"


C'est les erreurs typiques que me produit le SDK si j'inclus les .h. Plus l'erreur dont il est question plus haut
Calculatrice : Graph 35+ modée
Système d'exploitations : Apricity OS - Windows 10
Drac0300Hors ligneMembrePoints: 839 Défis: 39 Message

Citer : Posté le 16/05/2014 17:46 | #


Il y a un truc qui m'intrigue : dans
..\render/Camera.h(4) : C5005 (F) Could not open source file "math/Vector.h"

il utilise un "/" pour séparer les niveaux de l'arborescence (sauf au tout début ou c'est un "\"). Or, si tu utilise le SDK, je suppose que tu es sous Windows. Mais ça n'est pas logique, il devrait alors utiliser un "\"...
C'est peut-être complètement idiot mais ça m'intrigue.

De plus,
signature de Palra a écrit :
Système d'exploitation (principal) : Linux Mint 16
tu dois donc utiliser wine pour lancer le SDK. c'est peut-être la source du problème, un problème du système de fichier lié à wine...
Dans Z/1Z, 42==666
Coïncidence ? Je ne pense pas.
PalraHors ligneMembrePoints: 276 Défis: 0 Message

Citer : Posté le 16/05/2014 18:25 | #


Alors j'ai essayé sur Wine d'installer le SDK, je n'ai pas réussi à changer le chemin d'installation du SDK, ce qui provoque des erreurs de compilation si le chemin en question contient des espaces. J'ai laissé tomber Wine et là je suis sur un Windows virtualisé, donc Windows quoi.

Même si c'était un changement de "/" à "\", pourquoi avant ça marchait sans problèmes ? D'ailleurs ça ne change rien...
Calculatrice : Graph 35+ modée
Système d'exploitations : Apricity OS - Windows 10
LephenixnoirEn ligneAdministrateurPoints: 16140 Défis: 140 Message

Citer : Posté le 16/05/2014 18:55 | #


Le fichier n'existe pas du point de vue du SDK, de toute évidence.
Pour ma part, je déconseille Wine, car il me plantait à chaque compilation (Linux Mint 16, 64 bits).
Pour ce coup, je te conseille d'utiliser VirtualBox (XP SP3), qui fonctionne très bien, y compris avec l'USB (donc FA-124).
Sinon, essaye avec deux '\'. Avec un ça ne risque pas de fonctionner plus.
PalraHors ligneMembrePoints: 276 Défis: 0 Message

Citer : Posté le 16/05/2014 20:01 | #


Avec deux '\', toujours pareil. Et je suis bien sous Windows actuellement, Windows 8.
Calculatrice : Graph 35+ modée
Système d'exploitations : Apricity OS - Windows 10
LephenixnoirEn ligneAdministrateurPoints: 16140 Défis: 140 Message

Citer : Posté le 16/05/2014 20:03 | #


Tu as bien un fichier "Vector.h" (attention à la casse) dans un sous-dossier math du projet ou des dossiers standard ?
PalraHors ligneMembrePoints: 276 Défis: 0 Message

Citer : Posté le 16/05/2014 20:06 | #


Oui, tu peux regarder l'arborescence des fichiers dans le lien de mon premier message si tu veux.
Calculatrice : Graph 35+ modée
Système d'exploitations : Apricity OS - Windows 10
LephenixnoirEn ligneAdministrateurPoints: 16140 Défis: 140 Message

Citer : Posté le 16/05/2014 20:13 | #


Au temps pour moi.
Réflechissant une seconde, l'arborescence en / doit fonctionner vu que tu inclus "../lib/MonchromeLib.h".
De plus, l'erreur n'apparaît pas avec Matrix.h.

Enfin, rien de tout ça n'est sûr, puisque ça génère une fatal error...

Tu as essayé en copiant le header dans le même dossier que la source (et en adaptant bien entendu) ?
PalraHors ligneMembrePoints: 276 Défis: 0 Message

Citer : Posté le 16/05/2014 20:28 | #


Avec ta solution ça marche, mais bon je cherche quand même à rester organisé dans mes fichiers, si quelqu'un a déjà eu un problème similaire, qu'il le fasse savoir ! Merci Lephenixnoir en tout cas

Ajouté le 16/05/2014 à 21:01 :
Je n'ai même pas touché au code, et ça recommence, malgré l'application ta solution
Calculatrice : Graph 35+ modée
Système d'exploitations : Apricity OS - Windows 10
LephenixnoirEn ligneAdministrateurPoints: 16140 Défis: 140 Message

Citer : Posté le 16/05/2014 21:04 | #




De nouveau, rien n'a changé dans les chemins ?
Tu es sûr que tu n'as rien touché au code ?
PalraHors ligneMembrePoints: 276 Défis: 0 Message

Citer : Posté le 16/05/2014 21:16 | #


Absolument rien ! J'étais parti manger, je suis revenu et j'ai cliqué sur "Build", et encore erreur. Et je n'ai absolument rien touché !
Calculatrice : Graph 35+ modée
Système d'exploitations : Apricity OS - Windows 10
LephenixnoirEn ligneAdministrateurPoints: 16140 Défis: 140 Message

Citer : Posté le 16/05/2014 21:17 | #


Bon...
Je peux avoir le projet complet (dans un zip) ?
PalraHors ligneMembrePoints: 276 Défis: 0 Message

Citer : Posté le 16/05/2014 23:56 | # | Fichier joint


Voilà, en fichier joint ! Ne fais pas attention à tout ce qui est algorithmique, c'est en cours d'avancement
Calculatrice : Graph 35+ modée
Système d'exploitations : Apricity OS - Windows 10
LephenixnoirEn ligneAdministrateurPoints: 16140 Défis: 140 Message

Citer : Posté le 17/05/2014 07:37 | #


Voilà ce que je peux dire.
Le chemin d'accès à l'origine était bizarre, car composé de '\' avec un '/' à la fin.

J'ai tenté de modifier, renommer le fichier Vector.h, ce qui n'a pas fonctionné. Or l'inclusion de Matrix.h fonctionnait.
Puisque je pouvais inclure Vector.h dans Camera.c, je me suis demandé si on ne pouvait pas l'inclure "avant" pour qu'il soit visible par Camera.h.

Et si on inclut Vector.h dans Camera.c après Camera.h, on a une liste d'erreurs de noms indéfinis (j'ai retiré l'include de Camera.h). Or si on le met avant, on a une fatal error.

Je pense que tu peux chercher de ce côté.
PalraHors ligneMembrePoints: 276 Défis: 0 Message

Citer : Posté le 17/05/2014 13:35 | #


Merci beaucoup de ton aide ! Je verrai ça plus tard dans la journée, et je te tiendrai au courant, encore merci

Ajouté le 20/05/2014 à 20:01 :
J'ai trouvé le problème !

Lorsqu'on inclut un fichier dans un autre, le préprocesseur ne fait qu'un simple copie coller du contenu du fichier inclut, ainsi les chemins fournis ne sont plus fonctionnels si on part d'un autre fichier d'un autre dossier. Voilà pour le problème, mais je n'ai pas de solution. J'avais pensé à la forward declaration, mais je ne sais pas comment m'y prendre
Calculatrice : Graph 35+ modée
Système d'exploitations : Apricity OS - Windows 10
LephenixnoirEn ligneAdministrateurPoints: 16140 Défis: 140 Message

Citer : Posté le 20/05/2014 20:06 | #


Je savais pour le copier-coller mais je ne comprends pas où est le problème tant que l'inclusion est faite relativement au fichier dans lequel le header est inclus.
Tu pourrais détailler, ou me donner un exemple ?
PalraHors ligneMembrePoints: 276 Défis: 0 Message

Citer : Posté le 20/05/2014 20:09 | #


Ok, considère l'arborescence de fichiers suivante :

/src
- /lib
- - MonochromeLib.h
- /scenes
- - game.h
- - /levels
- - - level.h

Dans level.h, tu fais un include "../../lib/MonochromeLib.h", donc ok tout va bien, mais dans le game.h tu fais un include "levels/level.h", il trouve le fichier et copie son contenu, dont le "../../lib/MonochromeLib.h". Ainsi, depuis le game.h, "../../lib/MonochromeLib.h" ne pointe pas vers le bon fichier, il pointe d'ailleurs sur rien du tout.
Calculatrice : Graph 35+ modée
Système d'exploitations : Apricity OS - Windows 10
LephenixnoirEn ligneAdministrateurPoints: 16140 Défis: 140 Message

Citer : Posté le 20/05/2014 20:16 | #


Je vois.
Alors tu n'as plus qu'à appliquer une des deux solutions suivantes.
- Ne pas mettre d'include dans les fichiers inclus (contraignant)
- Utiliser des chemins absolus

La deuxième étant bien sûr la meilleure.
PalraHors ligneMembrePoints: 276 Défis: 0 Message

Citer : Posté le 20/05/2014 20:17 | #


Les chemins absolus n'ont pas l'air de fonctionner, tu t'y prends comment pour les utiliser ?

Je débute en C plz ne me frappe pas
Calculatrice : Graph 35+ modée
Système d'exploitations : Apricity OS - Windows 10
Pages : 1, 2Suivante

Planète Casio v42 © créé par Neuronix et Muelsaco 2004 - 2019 | Il y a 84 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd