Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3217 connectés 

  FORUM HardWare.fr
  Programmation
  C

  [Pb Compilation nc] : C'est quoi ' #ifdef ' ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Pb Compilation nc] : C'est quoi ' #ifdef ' ?

n°443941
bigstyle
Posté le 30-06-2003 à 12:48:33  profilanswer
 

Salut,
 
voila j'ai recuperé les sources du programme 'netcat' sur le net et j'aurai souhaité le recompiler sous Windows avec Visual Studio.
 
Je ne me suis jamais vraiment aventuré a compiler sous Windows alors je vais decrire en details ce que j'ai fait en esperant que quelqu un sache pourquoi cela ne fonctionne pas;
 
J'ai ouvert dans un workspace commun les fichiers doexec.c;getopt.c et netcat.c et j ai precise un path supplementaire dans les options de visual pour getopt.h et generic.h
 
J'ai aussi rajoute dans "Object/library modules",le "wsock32.lib .
 
Voila,une fois tout ca effectué,je lance un "build all",puis j'execute mon netcat.exe crée.
Il n y aucune erreur ni aucun warning et si je tape un netcat -h,l'aide s'affiche correctement.
 
Par contre,le programme ne fonctionne pas,il ne me met pas de message d'erreur mais mes commandes n'ont pas d'effet  :sweat:  
 
Voila,si quelqu'un a une idee,qu'il n'hesite pas .
 
Merci


Message édité par bigstyle le 30-06-2003 à 20:45:32
mood
Publicité
Posté le 30-06-2003 à 12:48:33  profilanswer
 

n°444585
bigstyle
Posté le 30-06-2003 à 20:32:42  profilanswer
 

Je viens de me rendre compte de quelque chose...
 
Apparement,tout fonctionne sauf une option qui est l'option -e qui ne s'affiche meme pas dans les options du programme (nc.exe -h)
 
Voila la partie du code correspondante à cette option :  
 
#ifdef GAPING_SECURITY_HOLE /* needs to be separate holler() */
  holler ("\
 -e prog  inbound program to exec " );
#endif
 
 
 
J'essaie donc de comprendre a quoi correspond ce #ifdef et comment il fonctionne.
J'ai lu que c'etait pour 'If defined';pour verifier qu'une variable existait mais en recherchant dans les sources je ne vois a aucun moment cette variable définie...
Voila...si quelqu un peut me venir en aide :)


Message édité par bigstyle le 30-06-2003 à 20:46:42
n°444660
gatorette
Posté le 30-06-2003 à 21:49:54  profilanswer
 

Si tu veux pouvoir compiler le code présent entre des balises ifdef et endif, il te faut définir ce qu'il attend.
Comme tu l'as trouvé, ifdef est une abbréviation de "if defined" ; c'est à dire que le préprocesseur va lire ça comme cela : "Si quelque part GAPING_SECURITY_HOLE a été défini, alors je traîte ce qu'il y a après. Sinon, je saute après le endif correspondant."
 
Donc si tu veux que compiler cette partie du code, il faut définir quelque part GAPING_SECURITY_HOLE. Tu peux le définir soit dans un fichier traîté avant le fichier qui t'intéresse (avec un simple #define GAPING_SECURITY_HOLE) ou encore la mettre dans tes options de compilation.


---------------
each day I don't die is cheating
n°444669
bigstyle
Posté le 30-06-2003 à 22:03:40  profilanswer
 

Merci gatorette,
 
j'ai eu quasiment a la seconde prés la meme info sur IRC :D
 
Bon ben maintenant faut que j'arrive a trouver ou se trouve cette option dans visual studio  :)

n°444774
bigstyle
Posté le 01-07-2003 à 01:26:31  profilanswer
 

Bon et ben c est bon je te remercie.
 
J'ai pu rajouter ce qui manquait et desormais ce qui ne s affichait pas fonctionne.
 
Enfin fonctionne...on va dire que l'aide s'affiche mais la fonction en elle-meme ne marche toujours pas :/
 
Je pense qu a moins de tomber sur quelqu un qui l'a deja compilé,ca sera pas facile de m'aider.
 
Parmi les fichiers pour les sources,il y a un fichier makefile.
Peut-on le rendre compatible avec visual studio ?

n°444825
El_gringo
Posté le 01-07-2003 à 08:44:11  profilanswer
 

bigstyle a écrit :


Parmi les fichiers pour les sources,il y a un fichier makefile.
Peut-on le rendre compatible avec visual studio ?


 
Automatiquement, j'en doute. Par contre, esssaye de regarder ce qu'il y a dedant (les #define et autres) pour reproduir à peu près la même chose avec Visual.

n°444842
chrisbk
-
Posté le 01-07-2003 à 08:57:08  profilanswer
 

El_gringo a écrit :


 
Automatiquement, j'en doute. Par contre, esssaye de regarder ce qu'il y a dedant (les #define et autres) pour reproduir à peu près la même chose avec Visual.


 
bah heuh tu peux lancer nmake sur le makefile [:spamafote]

n°444843
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 01-07-2003 à 08:57:55  profilanswer
 

bigstyle > je te conseille d'installer cygwin sur ta machine si tu veux compiler ce genre de source. tu te feras certainement moins chier que de retoucher le makefile pour le rendre compatible avec VS


---------------
J'ai un string dans l'array (Paris Hilton)
n°444844
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 01-07-2003 à 08:59:11  profilanswer
 

chrisbk a écrit :


 
bah heuh tu peux lancer nmake sur le makefile [:spamafote]

euh, oui mais non ! j'ai essayé une fois, sans toucher au makefile.... [:marc]


---------------
J'ai un string dans l'array (Paris Hilton)
n°444845
chrisbk
-
Posté le 01-07-2003 à 09:04:15  profilanswer
 

ah, le peu que j'ai essayé ca a marché, mais j'imagine que le fait que c'etait des makefiles specialement prevu pour visu a jouer un role dans le succes de l'operation [:ddr555]

mood
Publicité
Posté le 01-07-2003 à 09:04:15  profilanswer
 

n°444901
gatorette
Posté le 01-07-2003 à 10:27:43  profilanswer
 

Pour revenir un peu sur NetCat, as-tu été voir ici ? Apparemment, il y a une version spécifique pour Windows avec le source.


---------------
each day I don't die is cheating
n°454985
MrNoop
Posté le 11-07-2003 à 12:55:49  profilanswer
 

Une petite précision qui peut être  très importante:
 
Sous Linux, les sockets s'utilisent directement, puisqu'ils sont incorporés au système et à la libC.
 
Par contre sous windows, il faut passer par la lib winsock qui doit être initialisée au préalable. Opération merdique au possible. Donc prend la version windows si tu en trouves une, ou alors prépares-toi à en chier.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  [Pb Compilation nc] : C'est quoi ' #ifdef ' ?

 

Sujets relatifs
Compilation et debogage de module linux, aux pros de l'algo et systemeprobleme a la compilation pour afficher une fenetre avec SDL et opengl
programme de compilation[OCaml] problème de compilation
[gcc / g++]accélerer la compilationcompilation de xxx.java et création de xxx$1.java et xxx$2.java
[C] - compilation conditionelle (selon système win ou unix)recup des data apres compilation
VB et compilation EXEVB6: Erreur de compilation incompréhensible....pour moi
Plus de sujets relatifs à : [Pb Compilation nc] : C'est quoi ' #ifdef ' ?


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)