Comment ajouter .c et .h les fichiers d'Atmel Studio 6?
Je sais qu'il y a beaucoup de questions sur ce sujet, et j'ai regardé à travers un bon nombre d'entre eux. Cependant, je suis toujours avoir des problèmes.
J'ai commencé à écrire un programme de test d'un prototype de carte PCB, et maintenant qu'il a grandi à près de 1000 lignes, je suis en train de le casser en place dans les bibliothèques que je peux utiliser pour des fonctions particulières.
Je pensais que ce serait très simple. Faire .c et .h des fichiers d'une bibliothèque dont j'ai besoin. I. e. J'aurais OLED.h et OLED.c pour les fonctions de contrôle, un écran OLED. Copier les fonctions appropriées, les définitions, dans chaque fichier. Ensuite copier ces fichiers dans la solution en Atmel Studio. Je les ai mis dans le dossier src sous le nom de projet.
Toutefois, cela ne fonctionne pas! Je reçois très longue liste d'erreurs. Toutes les choses qui sont définies dans le .h fichier sont apparemment pas défini autant que le compilateur est concerné. Je reçois de nombreux messages d'erreur du type "unknown type name int16_t/uint16_t/u_int8_t/etc...," la partie est vraiment déroutant pour moi. Pourquoi est-il important que les fonctions sont dans une bibliothèque externe, maintenant que le compilateur ne comprend pas ce que ces types de données signifie?
Donc, c'est probablement un problème stupide pour avoir. Je ne veux pas Atmel Studio pour le contrôle de mes bibliothèques en les enveloppant dans certains "bibliothèque de projet" ou somethig, je veux les mettre dans un dossier de mon choix et de les ajouter quand j'en ai besoin. J'ai cherché des réponses à ce problème et j'ai trouver des tutoriels sur la modification des paramètres de compilation pour le projet, les paramètres de l'éditeur de liens, etc... j'ai essayé ce tuto et toujours pas de dés: http://www.engblaze.com/tutorial-using-avr-studio-5-with-arduino-projects/#setup
Je ne peux pas trouver un moyen d'ajouter quelque chose par clic-droit sur le projet et en cliquant sur "Ajouter". Il veut bien me trouver .un fichiers. Le "Add Library" dans la boîte de dialogue Atmel Studio est terrible, il me semble.
Il peut certainement pas être alambiqué pour juste ajouter une bibliothèque à un projet existant et l'ai de fonctionner normalement?! J'ai utilisé des Photos dans le passé et à venir pour Atmel j'ai trouvé horrible de la documentation et un drôle de super-lisse super fly whizz bang interface qui ne peut pas laisser assez bien seul et le trouble d'une fonction simple. Que puis-je faire pour ajouter ces bibliothèques?
Mise à JOUR: Semblait répondre à ma propre question. S'avère que j'ai besoin d'inclure l'ensemble des bibliothèques de reconnaître les types de données et autres joyeusetés dans le .c fichier. Je présume cela ne devait être fait dans le fichier principal, mais visiblement je me trompais. L'ajout d'asf.h semble bien fonctionner car il inclut tous les MCU port spécifique définitions/les noms et tout et tout. Tout bon pour l'instant!
OriginalL'auteur SVFeingold | 2013-06-06
Vous devez vous connecter pour publier un commentaire.
L'ajout de fichiers de bibliothèque pour une solution doit être simple. Accédez à l'Explorateur de solutions, cliquez-droit sur votre solution, et allez dans "Ajout->Élément Existant". Si vous souhaitez ajouter un pré-existante de la bibliothèque et de la garder dans un dossier distinct de votre solution, cliquez sur la flèche à côté de "Ajouter" et choisissez "Ajouter un lien". Qui permet d'économiser beaucoup de maux de tête dus à la présence d'une double copie de votre bibliothèque dans votre dossier de solution, et les fichiers ne restent pas à jour.
OriginalL'auteur Ernest3.14
Vous avez raison de dire que vous avez besoin pour contenir les fichiers d'en-tête dans le
.c
fichiers où ils sont utilisés.Le compilateur compile chaque fichier séparément, puis les relie ensemble à la fin, si vous avez l'erreur
unknown typename int_*
, car le compilateur ne l'avait pas vu pertinentes de l'en-tête dans le contexte de la compilation que C fichier.Vous semblez aussi dans une certaine confusion quant à la différence entre la définition et de la déclaration.
Une fonction est:
int some_func(char some_var);
qui indique au compilateur que la fonction existe, mais ne dites pas qu'il ce que c'est. Cela est nécessaire parce que le compilateur ne regarde que C un fichier à la fois, de sorte que besoin d'être dit que d'autres fonctions existent.int some_func(char some_var) { do_stuff(some_var); }
. Après la compilation de chaque fichier C dans l'isolement, la de l'éditeur de liens est appelé à mettre toutes les pièces ensemble et vous donner votre final binaire, qui vous flash de l'appareil.Une fonction peut être (et doit être) défini une seule fois, mais peut être déclaré à de nombreuses reprises - même dans le même fichier, à condition que les déclarations ne sont pas contradictoires.
OriginalL'auteur Luke Wren