1

Bonsoir,

Je debute en lattice C et je rencontre des problemes de compilation.

En compilant un exemple de programme, j'obtient comme erreur

Undefined symbols First Referenced

_wind_create File 'C:\LC\EXAMPLES\CLOCK\CLOCK.O'

ceci pour toutes les symbols GEM utilisé.


Merci pour vos reponse.

Cordialement

2

Apparemment il te manque les définitions des fonctions GEM, étonnant pour un exemple confus
Tu as quoi comme #include ?

3

voila le fichier que je cherche à compiler.



tromb Fichier joint : CLOCK.C

4

Je ne connais pas le Lattice C, mais il utilise un makefile ?
Tu as bien la librairie GEM dans la liste des librairies à linker ?
avatar
Futur ex éditeur de jeux Atari Lynx et Nintendo Game Boy
https://yastuna-games.com

5

desolé, je suis debutant de chez debutant ..je comprend pas tes questions

la librairie GEM est bien dans le aes.h non?

6

En fait, quand tu compiles, avant d'obtenir un exécutable (.PRG, .TOS .APP ou .ACC dans le cas présent), il y a plusieurs étapes :
- la compilation qui va transformer le code C en assembleur
- la compilation de l'assembleur généré en objet (le fichier .O)
A ce niveau là, tu as juste les appels vers les fonctions (manipulation de texte, GEM...), mais pas le code correspondant à ces fonctions qui sont dans des librairies objets (les fichiers .h donnent juste généralement le nom des fonctions et leurs paramètres d'appel)
Il reste donc cette étape :
- le linkage qui prend le .o généré + haut (ou les .o sur des projets un peu plus gros), et rajoute les bouts de codes correspondant aux fonctions externes appelés en les prenant depuis les librairies.

Là, j'ai l'impression que tu as passé les 2 premières étapes, mais qu'il a un problème avec le linker, probablement parce que dans les librairies à linker, il n'y a pas celle contenant les fonctions GEM.

Un makefile, c'est un fichier de paramétrage décrivant comment partir du ou des sources C d'origine et que faire pour obtenir l'exécutable.

Dans Turbo C / Pure C, il parlaient plutôt de fichiers projet (.PRJ), et parmi ceux fournis, il y avait plusieurs exemples de mémoire, qui permettaient de compiler un source avec ou sans GEM par exemple (donc un .PRG vs un .TOS) en listant les bonnes librairies selon les cas.
Il est possible que tu utilises le mauvais makefile/projet/fichier de configuration Lattice et qu'il faudrait utiliser un paramétré pour le GEM (désolé de ne pas être plus précis, j'ai jamais utilisé Lattice, et ça doit faire presque 20 ans que je n'ai pas compilé un programme C sur Atari)
avatar
Futur ex éditeur de jeux Atari Lynx et Nintendo Game Boy
https://yastuna-games.com

7

Merci Fadest, en cherchant dans tous les sens j'ai trouvé.

Je croyais que le fichier a compiler etait le fichier .C (normal c'est le programme en C) mais en fait il fallait charger en fait le .PRJ

J'ai pas tout compris ce que tu m'as expliqué , mais ça viendra avec le temps tongue

8

Le C est bien sur compilé, mais il n'y a pas que ça à faire en fait wink

Disons que tu fais ton code dans le .C, mais que tu compiles un projet, décrit dans le .PRJ
avatar
Futur ex éditeur de jeux Atari Lynx et Nintendo Game Boy
https://yastuna-games.com

9

J'ai fait un petit programe en C avec la librairie stdio, un simple printf avec getch pour sortir et j' ai reussi à le compiler et l'executer.

Qu'est ce qu'il ya exactement dans le .PRJ et comment le crée t-on?

10

Pour le coup, c'est dépendant de l'outil, donc de Lattice C, le mieux, c'est d'éditer un PRJ existant et de l'étudier (c'est normalement un fichier texte)
Eventuellement, tu peux poster un exemple de .PRJ, pour voir si on peut t'aider ou t'orienter.
avatar
Futur ex éditeur de jeux Atari Lynx et Nintendo Game Boy
https://yastuna-games.com

11

j'ai regardé dans le PRJ, il suffit d'ajouter le fichier .C , juste ça...

Merci pour les infos