-1
私は現在C++プロジェクトで作業していますが、進捗を許さない問題があります。 は、ここに私のメイクです:私は前の演習のためではなくClassementとMatriculeせずに同じメイクファイルを使用しましたmake:致命的なエラー:コマンドの実行に失敗しました
Test: Test2.cpp Joueur.o Matricule.o Classement.o
g++ -o Test2 Test2.cpp Joueur.o Matricule.o Classement.o
Joueur.o: Joueur.cxx Joueur.h
g++ Joueur.cxx -c
Matricule.o: Matricule.cxx Matricule.h
g++ Matricule.cxx -c
Classement.o: Classement.cxx Classement.h
g++ Classement.cxx -c
、それが働きました。 私はこのメイクを使用する場合、それは私にそのメッセージが表示されます。ここでは
[email protected]:~/Téléchargements$ make
g++ -o Test2 Test2.cpp Joueur.o Matricule.o Classement.o
Undefined first referenced
symbol in file
Essai3() /var/tmp//cc62aqDe.o
Essai4() /var/tmp//cc62aqDe.o
Essai2() /var/tmp//cc62aqDe.o
ld: fatal: symbol referencing errors
collect2: error: ld returned 1 exit status
*** Error code 1
make: Fatal error: Command failed for target `Test'
はtest2.cppのコードです:
#include <stdlib.h>
#include <iostream>
#include <string.h>
#include "Joueur.h"
#include "Matricule.h"
#include "Classement.h"
using namespace std;
int Menu();
void Essai1();
void Essai2();
void Essai3();
void Essai4();
int main(int argc,char* argv[])
{
bool fini = false;
while(!fini)
{
int choix;
if (argc == 2) { choix = atoi(argv[1]); fini = true; }
else choix = Menu();
switch(choix)
{
case 1 : Essai1(); break;
case 2 : Essai2(); break;
case 3 : Essai3(); break;
case 4 : Essai4(); break;
default : fini = true ; break;
}
}
return 0;
}
//*******************************************************************************************************
int Menu()
{
cout << endl;
cout << "--------------------------------------------------------------------------------------" << endl;
cout << "--- JEU DE TESTS 2 -------------------------------------------------------------------" << endl;
cout << "--------------------------------------------------------------------------------------" << endl;
cout << " 1. Tests de la classe Matricule" << endl;
cout << " 2. Tests de la classe Classement" << endl;
cout << " 3. Tests de la classe Joueur (avec agregations par valeur et par reference)" << endl;
cout << " 4. Tests des variables statiques utiles" << endl;
cout << " 5. Quitter" << endl << endl;
int ch;
cout << " Choix : ";
cin >> ch; // Faites pas le biess !
return ch;
}
//*******************************************************************************************************
//*** Tests de la classe Matricule **********************************************************************
//*******************************************************************************************************
void Essai1()
{
cout << "(1) ***** Test des constructeurs de Matricule *****" << endl;
{
Matricule m1, m2("01/09/2016",25369), m3(m2);
cout << "Defaut : "; m1.Affiche();
cout << "Initialisation : "; m2.Affiche();
cout << "Copie : "; m3.Affiche();
cout << endl;
}
cout << endl << "(2) **** Test des setters/getters *****" << endl;
{
Matricule m;
cout << "Defaut : "; m.Affiche();
m.setDateInscription("15/10/2012");
m.setNumero(14817);
cout << "Apres setters : "; m.Affiche();
cout << endl << "Date inscription : " << m.getDateInscription() << endl;
cout << "Numero : " << m.getNumero() << endl;
}
}
私は初心者だが、私はメイクファイルのこの種類があることを知っていますシンプルな、しかし私はまだ問題を発見していない。 問題は本当にmakefileにありますか?
実装されていませんでしたか? ldのエラーメッセージは正確に言います。 –
いいえ、私はそうは思わない、私はそれらの機能を実装しましたが、私はまだ同じエラーメッセージがあります。 makefileに問題はありませんか? –
サンプルコードでは、これらの関数は実装されていません。あなたは簡潔にするためにそれらを省略しましたか? –