Bonjour,
Debutant en C/C++ et BCB5, je n'arrive pas a generer un .LIB qui fonctionne.
Voila comment je procède (d'abord, j'ai teste ce petit programme ( une application console) dans un seul fichier .cpp et il fonctionne sans probleme.) :
Dans "New Items" je choisis "Library"
Dans un fichier nomme : "Ville.bpf" j'entrei le code suivant :
==================
Code:
#include <vcl.h>
#pragma hdrstop
#define Library
// To add a file to the library use the Project menu 'Add to Project'.
#include "Ville.h"
#include <cstdio>
#include <iostream>
#include <cctype>
void FixeNom(char leNom[], Ville & laVille) {
int k=0;
while ( leNom[k] != '\0' && k <= LONGUEUR_MAX) {
laVille.NomVille[k] = toupper(leNom[k]);
k = k + 1 ;
}
laVille.NomVille[k] = '\0';
}
int VerifierPopulation(int leNombre) {
if (leNombre <= 0) {
cerr << "VérifierPopulation : le nombre doit être > 0";
exit(1);
}
return leNombre;
}
string Chaine(Ville laVille) {
string resultat = "Ville(";
resultat += laVille.NomVille;
resultat += ", ";
{ char valeurPopulation[25];
sprintf(valeurPopulation, "%ld", laVille.Population);
resultat += valeurPopulation;
}
resultat += ') ';
return resultat;
}
===================
Puis un "Compile" : aucun resultat en sortie
Puis un "Build" : en sortie un fichier "Ville.lib" qui semble vide : 1 Ko
Le fichier header "Ville.h" :
=================
Code:
#include <string>
using namespace std;
#define LONGUEUR_MAX 26
struct Ville {
char NomVille[LONGUEUR_MAX+1];
int Population;
};
void FixeNom(char leNom[], Ville & laVille);
int VerifierPopulation(int leNombre);
string Chaine(Ville laVille);
================
Puis je copie : "Ville.h" et "Ville.lib" dans un nouveau projet dont le source "Ville.cpp" est :
===============
Code:
#pragma hdrstop
#include "Ville.h"
//#include <cstdio>
#include <iostream>
//#include <cctype>
int main()
{
Ville vA = {"Lyon"}, vB ={"AIX LES BAINS"};
int nA=10, nB=20;
vA.Population = VerifierPopulation(nA);
vB.Population = VerifierPopulation(nB);
FixeNom("marseille",vA);
cout<<"laVille = "<<vA.NomVille<<" - Population = "<<vA.Population<<endl;
string chn = Chaine(vA);
if (chn.length() <= 26)
cout << Chaine(vA);
else
cout << vA.NomVille;
return 0;
}
==============
La compilation de "Ville.cpp" se deroule sans message d'erreur et donne un "Ville.obj"
Puis le "Build project" donne les messages d'erreur suivant:
=====
[Linker Error] Unresolved external 'VerifierPopulation(int)' referenced from D:\TEST\UNIT1.OBJ
[Linker Error] Unresolved external 'FixeNom(char *, Ville&)' referenced from D:\TEST\UNIT1.OBJ
[Linker Error] Unresolved external 'Chaine(Ville)' referenced from D:\TEST\UNIT1.OBJ
======
D'ou vient ce probleme ?
Merci de votre aide