mafio31
Messages postés15Date d'inscriptionjeudi 24 mai 2007StatutMembreDernière intervention11 février 2008
-
31 janv. 2008 à 14:14
mafio31
Messages postés15Date d'inscriptionjeudi 24 mai 2007StatutMembreDernière intervention11 février 2008
-
6 févr. 2008 à 06:55
Bonjour,
j'ai récupérer un code dont j'ai besoin, qui sert à lire des valeurs dans un capteur de température, via un réseau 1-Wire.
Donc j'ai un fichier.cpp et un fichier.h. Dans le .h, il y a dans la déclaration:
using
namespace System;
using
namespace com::dalsemi::onewire;
using
namespace com::dalsemi::onewire::debug;
using
namespace com::dalsemi::onewire::adapter;
using
namespace com::dalsemi::onewire::container;
using
namespace com::dalsemi::onewire::utils;
J'aimerais comprendre à quoi cela sert, car ça me provoque des erreurs lors de la compilation!
luhtor
Messages postés2023Date d'inscriptionmardi 24 septembre 2002StatutMembreDernière intervention28 juillet 20086 31 janv. 2008 à 21:05
Euh je suis pas d'accord. Il ne s'agit pas de "déclarer des lib que l'on veut utiliser." Il s'agit simplement de préciser dans quel espace de nom on veut travailler.
mafio31
Messages postés15Date d'inscriptionjeudi 24 mai 2007StatutMembreDernière intervention11 février 2008 1 févr. 2008 à 00:18
Apparament cela servirait à déclarait une dll, c'est comme si il y avait "import com.dalsemi.onewire" en Java.
Seulement cela me pose problème car ça me met des erreurs lors de la compilation, quelqu'un pourrait me dire comment faire ? (je possède la dll, la mettre dans le fichier courant ne change rien :s)
luhtor
Messages postés2023Date d'inscriptionmardi 24 septembre 2002StatutMembreDernière intervention28 juillet 20086 1 févr. 2008 à 18:03
Si tu utilises forcément une lib externe par l'intermédiaire d'un fichier de définition .h car ces namespace n'existent pas en standard. Donc il faut que tu recherches dans toutes les sources que tu as, l'endroit ou sont définis ces namespace.
Tu recherches la chaine "namespace System".
Tu devrais trouver une ligne du style:
namespace System
{
...
};
cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention 7 novembre 201413 5 févr. 2008 à 14:35
Salut,
Un namespace permet de regrouper des classes, des fonctions, des
types... Sous un même nom. Genre dans le name space équitation, il y a
cheval, sabot, cravache... Pour faire un namespace.
<code class="cpp_keyword2">namespace
a
{
void
toto
()
//
première
fonction
toto
{
}
}
</code>
Dans ton cas, tu ne veux pas faire un namespace, tu veux te servir d'un namespace existant.
Les fonctions d'un namespace sont cachées, et il faut préciser le
namespace pour accèder à la fonction en question. Il y a deux méthodes
: préciser le namespace à chaque appel :
<code class="cpp_function">a::
toto
();
</code>
Mais cette syntaxe est très lourde. C'est pour cela que l'on utilise using namespace :
using namespace a;
toto();
On utilise using une fois au début du fichier, et on a plus à préciser le namespace à chaque fois.
Maintenant, ton problème est que ton source a des using namespace,
et donc appelle probablement des fonctions déclarés dans ceux-ci, mais
le compilo ne trouve pas les déclaration de ces namespace.
luthor t'as demandé de rechercher la déclaration de ces namespaces,
et toi, tu lui a donné la ligne qui dit que l'on va les utiliser...
Ce qu'il te manque, ce n'est ni une .dll ou un .lib, mais un .h, ou
l'inclusion de ce .h dans ton fichier qui demande les namespaces. Mais
c'est vrai que comme le dit Renfield, ça peut peut être un fichier
généré par VC à partir d'une dll COM ou d'un assembly .NET.
Et comme le dit luthor, dans ce .h, tu trouveras :
namespace System
{
...
};
Par contre le namespace System, ça sent encore le coup de la CLR, et
il à l'air de le trouver, donc occupe toi plutôt des autres.
D'après google, il dalsemi = Dallas Semiconductor.
mafio31
Messages postés15Date d'inscriptionjeudi 24 mai 2007StatutMembreDernière intervention11 février 2008 6 févr. 2008 à 06:55
Merci pour vos réponses,
j'ai trouvé mon erreurs! ce "using namespace com::dalsemi::....." faisait bien apelle à un fichier .dll (OneWireAPI.NET.dll). Il fallait donc ajouter cette dll comme référence (je ne connaissais pas cette option)
Voici comment faire:
- dans le menu en haut, 'Projet'
- 'Propriété'
- dans le menu de gauche 'Propriétés communes'
- 'Références'
- puis 'Ajouter une nouvelle référence'
- onglet 'Parcourir'
- et on selectionne la lib dynamique souhaitée.
Voilà, merci à ceux qui ont pris le temps de répondre :)