[C++] compile sous windows mais pas sous linux

compile sous windows mais pas sous linux [C++] - C++ - Programmation

Marsh Posté le 04-05-2005 à 16:03:34    

Je rencontre un problème sur un programme tout con mais je ne vois pas d'où peut venir le problème :cry: Ça compile trés bien avec .Net mais pas du tout sous mon Linux.
Quelqu'un a une idée ?
 
Les erreurs:
 

$ g++ -o main main.cc
/tmp/cct5cvXS.o(.text+0x1e): In function `main':
: undefined reference to `Localization::Localization[in-charge]()'
/tmp/cct5cvXS.o(.text+0xa2): In function `main':
: undefined reference to `Localization::verif(wireless_network*)'
/tmp/cct5cvXS.o(.text+0xb0): In function `main':
: undefined reference to `Localization::~Localization [in-charge]()'
/tmp/cct5cvXS.o(.text+0xd6): In function `main':
: undefined reference to `Localization::~Localization [in-charge]()'
collect2: ld a retourné 1 code d'état d'exécution


 
 
Le fichier avec le main:
 

Code :
  1. #include <iostream>
  2. #include "Localization.h"
  3. using namespace std;
  4. int main(void)
  5. {
  6. //Localization l();
  7. Localization loc ;
  8. wireless_network *net = new wireless_network;
  9. loc.verif(net);
  10. /*       
  11. net->ssid = "
  12. net->bssid
  13. net->type
  14. net->carrier
  15.     net->beacon_info == "" ? "None" : net->beacon_info.c_str()
  16.     net->channel
  17. net->crypt
  18.     net->maxrate
  19.     */
  20. /*
  21. loc.setPoint(12,21,50);
  22. cout << "1er point:" << endl << "x = " << loc.getCoordX() << endl << "y = " << loc.getCoordY() << endl ;
  23. loc.setPoint(34,43,68);
  24. cout << "2e point:" << endl << "x = " << loc.getCoordX() << endl << "y = " << loc.getCoordY() << endl ;
  25. */
  26. return 0;
  27. }


 
La classe Localization (le .h):
 

Code :
  1. #ifndef __LOCALIZATION_H__
  2. #define __LOCALIZATION_H__
  3. #include "tracktypes.h"
  4. #define ARRAY_SZ 15
  5. class Localization
  6. {
  7. private:
  8.  double t[ARRAY_SZ] ; //array to store measure point (x,y) + power of the signal
  9.  double x ; //access point x coord
  10.  double y ; //access point y coord
  11.  int nbp ; //number of points entered
  12.  bool loc_p ; //if at least one point is entered its value is changed to true
  13.  void data_calc(); //AP Coord calculation
  14. public:
  15.  Localization();
  16.  Localization( const Localization& );
  17.  ~Localization();
  18.  void setPoint(double, double, double) ; //enter new measure point
  19.  //getters
  20.  double getCoordX() ;
  21.  double getCoordY() ;
  22.  //file access
  23.  bool verif(wireless_network *);
  24. };
  25. #endif


 
La classe Localization (le .cc):


#include "Localization.h"
 
 
 
 
 
 
 
Localization::Localization()
 
{
 
 for(int i=0;i<ARRAY_SZ;i++)
 
  t[i]=0;
 
 
 
 x=0;
 
 y=0;
 
 nbp=0;
 
 loc_p=false;
 
 
 
}
 
 
 
 
 
Localization::Localization(const Localization& o)
 
{
 
 x = o.x;
 
 y = o.y;
 
 nbp = o.nbp;
 
 loc_p = o.loc_p;
 
 
 
 for(int i=0;i<ARRAY_SZ;i++)
 
  t[i]=o.t[i];
 
}
 
 
 
 
 
Localization::~Localization()
 
{
 
 
 
}
 
 
 
 
 
void Localization::data_calc()
 
{
 
 //TODO
 
 x++;
 
 y++;
 
}
 
 
 
 
 
 
 
void Localization::setPoint(double a, double b, double c)
 
{
 
 if(nbp<5) //max number of points to locate an access point is set to 5
 
 {
 
  int i=nbp*3; //put the index at the array's first empty element
 
 
 
  t[i]=a ; //coord x
 
  t[i+1]=b ; //coord y
 
     t[i+2]=c ; //power
 
 
 
  nbp++;  //increase the number of points
 
  loc_p=true; //at least one point is entered
 
 
 
  if(nbp>2) //if we have at least 3 measure points, we can make the calculation
 
   data_calc();
 
 }
 
}
 
 
 
 
 
//getters
 
 
 
double Localization::getCoordX()
 
{
 
 return x;
 
}
 
   
 
double Localization::getCoordY()
 
{
 
 return y;
 
}
 
 
 
bool Localization::verif( wireless_network *net )
 
{
 
 int netnum = 1 ;
 
 FILE *netfile;
 
 
 
 if ((netfile = fopen("test.kis", "w+" )) == NULL) {
 
        fprintf(stderr, "Could not open %s for writing" );
 
        return false;
 
    }
 
 
 
 
 
 char type[15];
 
 
 
    if (net->type == network_ap)
 
     snprintf(type, 15, "infrastructure" );
 
 else if (net->type == network_adhoc)
 
  snprintf(type, 15, "ad-hoc" );
 
  else if (net->type == network_probe)
 
  snprintf(type, 15, "probe" );
 
    else if (net->type == network_data)
 
     snprintf(type, 15, "data" );
 
    else if (net->type == network_turbocell)
 
        snprintf(type, 15, "turbocell" );
 
    else
 
        snprintf(type, 15, "unknown" );
 
 
 
        char carrier[15];
 
        if (net->carrier_set & (1 << (int) carrier_80211b))
 
            snprintf(carrier, 15, "802.11b" );
 
        else if (net->carrier_set & (1 << (int) carrier_80211bplus))
 
            snprintf(carrier, 15, "802.11b+" );
 
        else if (net->carrier_set & (1 << (int) carrier_80211a))
 
            snprintf(carrier, 15, "802.11a" );
 
        else if (net->carrier_set & (1 << (int) carrier_80211g))
 
            snprintf(carrier, 15, "802.11g" );
 
        else if (net->carrier_set & (1 << (int) carrier_80211fhss))
 
            snprintf(carrier, 15, "802.11 FHSS" );
 
        else if (net->carrier_set & (1 << (int) carrier_80211dsss))
 
            snprintf(carrier, 15, "802.11 DSSS" );
 
        else
 
            snprintf(carrier, 15, "unknown" );
 
 
 
  string crypt;
 
  if (net->crypt_set == 0)
 
   crypt = "None";
 
  if (net->crypt_set & crypt_wep)
 
   crypt += "WEP ";
 
  if (net->crypt_set & crypt_wpa)
 
   crypt += "WPA ";
 
  if (net->crypt_set & crypt_layer3)
 
   crypt += "Layer3 ";
 
  if (net->crypt_set & crypt_leap)
 
   crypt += "LEAP ";
 
  if (net->crypt_set & crypt_ttls)
 
   crypt += "TTLS ";
 
  if (net->crypt_set & crypt_tls)
 
   crypt += "TLS ";
 
  if (net->crypt_set & crypt_peap)
 
   crypt += "PEAP ";
 
  if (net->crypt_set & crypt_isakmp)
 
   crypt += "ISAKMP ";
 
        if (net->crypt_set & crypt_pptp)
 
            crypt += "PPTP ";
 
 
 
  if (crypt.length() == 0)
 
   crypt = "Unknown";
 
 
 
        fprintf(netfile, "Network %d: \"%s\" BSSID: \"%s\"\n"
 
                "    Type       : %s\n"
 
                "    Carrier    : %s\n"
 
                "    Info       : \"%s\"\n"
 
                "    Channel    : %02d\n"
 
                "    Encryption : \"%s\"\n"
 
                "    Maxrate    : %2.1f\n",
 
                netnum,
 
                net->ssid.c_str(), net->bssid.Mac2String().c_str(), type, carrier,
 
                net->beacon_info == "" ? "None" : net->beacon_info.c_str(),
 
                net->channel,  
 
    crypt.c_str(),
 
                net->maxrate);
 
                 
 
 
 
 return true ;
 
}


Message édité par nodus le 04-05-2005 à 16:03:55

---------------
Et toi, tu crois que les ours polaires vont chier dans les bois ?
Reply

Marsh Posté le 04-05-2005 à 16:03:34   

Reply

Marsh Posté le 04-05-2005 à 16:18:27    

g++ -c -O3 -W -Wall Localization.cc
g++ -O3 -W -Wall -o main main.cc Localization.o

Reply

Marsh Posté le 04-05-2005 à 16:19:12    


 
g++ -o main main.cc Localization.cc
 

Reply

Marsh Posté le 04-05-2005 à 16:21:09    

inutile dans ton cas de definir destructeur et constructeur de copie

Reply

Marsh Posté le 05-05-2005 à 00:17:56    

beurk, j'aurais mieux fait de pas venir.
 
__LOCALIZATION_H__
 
__ sont réservés à l'implémentation
 
 
tu aurais du utiliser quelque chose comme
NODUS_MON_PROJET_LOCALIZATION_H
 

Reply

Marsh Posté le 05-05-2005 à 00:43:06    

Taz a écrit :

__ sont réservés à l'implémentation


Tiens un jour j'avais un prob et un mec regardait mon code et il a commencé par remplacer mes HEADER_H par __HEADER_H__ jlui ai fait :heink: avant qui finisse, alors y m'a dit "enfin ouais ya des gens qui font comme ça aussi puis c'est plus court", jlui ai refait :heink: alors il est partit.

Reply

Marsh Posté le 06-05-2005 à 14:34:24    

Taz a écrit :

beurk, j'aurais mieux fait de pas venir.
 
__LOCALIZATION_H__
 
__ sont réservés à l'implémentation
 
 
tu aurais du utiliser quelque chose comme
NODUS_MON_PROJET_LOCALIZATION_H


 
 
C'est anjuta qui me met ça de base [:spamafote]  
 
Sinon merci à tous pour votre aide [:romf]


---------------
Et toi, tu crois que les ours polaires vont chier dans les bois ?
Reply

Marsh Posté le 06-05-2005 à 14:57:05    

ben envoie un rapport de bug a anjuta

Reply

Marsh Posté le 07-05-2005 à 10:27:38    

Taz a écrit :

ben envoie un rapport de bug a anjuta


 
je ne suis pas sur que ce soit une bonne idée, à voir :
 
17.4.3.1 : [...] The C++ Standard Library reserves the following kinds of names :
- Macros
- Global names
- Names with external linkages
[...]
 
17.4.3.1.1 Macro names
rien de spécial (flemme de recopier)
 
17.4.3.1.2 Global names
__  et _Majuscule reservé à l'implémentation pour n'importe quelle utilisation.
_* reserved to the implementation for use as a name in the global namespace.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed