|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Oct 2004
Messaggi: 304
|
[C++/Assembly] problema di collegamento
salve
dunque ho messo nella stessa cartella i seguenti 3 files: prova1.cpp , cc.h e es1.s . I primi due file sono così fatti: Codice:
// prova1.cpp
#include "cc.h"
int main()
{ st s = { 1,2,3,4, 1.0,2.0,3.0,4.0 };
int v[4] = {10,11,12,13 };
double d = 2.5;
cl cc1(v); cc1.stampa();
cc1.elab1(s, d); cc1.stampa();
cout << d << endl;
}
Codice:
#include <iostream>
using namespace std;
struct st { int vv1[4]; double vv2[4]; };
class cl
{ int a, b; st s;
public:
cl(); cl(int v[]);
void elab1(st ss, double& d);
cl elab2(cl cc);
void stampa()
{ int i; cout << a << ' ' << b << endl;
for (i=0;i<4;i++) cout << s.vv1[i] << ' '; cout << '\t';
for (i=0;i<4;i++) cout << s.vv2[i] << ' '; cout << endl;
cout << endl;
}
};
Il file es1.s è in Assembly e non lo sto a riportare in quanto non è quello la causa del problema (almeno penso :P ). Premesso questo quando do il comando: gxx -o es1 -fno-elide-constructors es1.s prova1.cpp mi da il seguente errore: In function `main': prova1.cpp prova1.cpp collect2: ld returned 1 exit status Qualcuno sa dirmi come posso risolvere? Grazie |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Oct 2004
Messaggi: 304
|
non mi sa aiutare nessuno?
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Oct 2004
Messaggi: 1945
|
Se non sbaglio è un errore di linking. Cioè hai dichiarato la tua funzione, ad esempio funzione1(int*) e per il compilatore non c'è nessun problema, ma quando poi il linker va ad unire il tutto, funzione1(int * var){codice} non la trova da nessuna parte!
Nel tuo caso cl(int*) e elab1(....) non riesce a trovare le loro implementazioni. Ma conviene implementare una classe in un header? E' una domanda la mia perchè in C non è cosa buona e giusta implementare una funzione in un file header. |
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Oct 2004
Messaggi: 304
|
Quote:
|
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 04:11.




















