Problem includes & Variablen < C/C++ < Programmiersprachen < Praxis < Informatik < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 19:49 So 19.05.2013 | Autor: | Mija |
Hallo, ich habe ein Problem mit meinen globalen Konstanten bzw. meinen includes.
Ich habe als Grundgerüst eine Header-Datei post.h:
1: | */ post.h */
| 2: |
| 3: | #include <string>
| 4: |
| 5: | using namespace std;
| 6: |
| 7: | #ifndef POST_H
| 8: | #define POST_H
| 9: |
| 10: | ....
| 11: |
| 12: | #define //POST_H |
Dann habe ich dazu eine Datei post.cpp, in denen ich die Methoden zu post.h definiere:
1: | /* post.cpp */
| 2: |
| 3: | #include <iostream>
| 4: | #include <string>
| 5: | #include "post.h"
| 6: |
| 7: | ....
| 8: |
|
In post_main.cpp teste ich dann das Zusammenspiel der Dateien post.h und post.cpp:
1: | /* post_main.cpp */
| 2: | #include <iostream>
| 3: | #include <string>
| 4: | #include "post.h"
| 5: |
| 6: | using namespace std;
| 7: |
| 8: | int main(void)
| 9: | {
| 10: | ...
| 11: | } |
Nun habe ich eine weitere Header-Datei versand.h, in der ich die Datei post.h inkludiere. Dort initialisiere ich die Konstante LAENGE, die direkt danach in der versand.h verwendet wird (deshalb wird sie hier initialisiert):
1: | /* versand.h */
| 2: |
| 3: | #include "...\Projektname\post.h" //!
| 4: |
| 5: | #ifndef VERSAND_H
| 6: | #define VERSAND_H
| 7: |
| 8: | const int LAENGE = 30; //feste Laenge der Arrays
| 9: |
| 10: | ...
| 11: |
| 12: | #endif //versand.h |
In der Datei versand.cpp definiere ich die Methoden von versand.h. Hier deklariere ich außerdem die externen Variablen anzB und anzP:
1: | /* versand.cpp */
| 2: | #include <iostream>
| 3: | #include "...\Projektname\post.h"
| 4: | #include "versand.h"
| 5: |
| 6: | using namespace std;
| 7: |
| 8: | extern int anzB, anzP; //Anzahl der vorhandenen Briefe und Pakete
| 9: |
| 10: | ...
| 11: |
|
In der versand_main.cpp teste ich dann das Zusammenspiel aller anderen Dateien. Hier initialisiere ich außerdem anzB und anzP:
1: | /* versand_main.cpp */
| 2: | #include <iostream>
| 3: | #include "versand.h"
| 4: |
| 5: | using namespace std;
| 6: |
| 7: | extern int anzB=0, anzP=0; //Anzahl der vorhandenen Briefe und Pakete
| 8: |
| 9: | //Main-Programm
| 10: | int main()
| 11: | {
| 12: | ...
| 13: | } |
Nun bekomme ich immer u.a. die Fehlermeldung
Fehler 1 error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: bool __thiscall Adresse::einlesen(void)" (?einlesen@Adresse@@QAE_NXZ)" in Funktion ""public: bool __thiscall Post::einlesenAbsender(void)" (?einlesenAbsender@Post@@QAE_NXZ)".
ausgespuckt. Das Programm geht damit garnicht erst zu starten.
Was mache ich falsch? Wo ist mein Fehler? Ich probiere schon seit Stunden herum und komme nich weiter.
Da der gesamte Code sehr lang ist, möchte ich ungern alles hier posten.
Ich würde mich freuen, wenn mir bitte jemand weiterhelfen könnte!
|
|
|
|
Hallo Mija,
> Hallo, ich habe ein Problem mit meinen globalen Konstanten
> bzw. meinen includes.
>
> Ich habe als Grundgerüst eine Header-Datei post.h:
>
> 1: | */ post.h */
| 2: | >
| 3: | > #include <string>
| 4: | >
| 5: | > using namespace std;
| 6: | >
| 7: | > #ifndef [mm]POST_H[/mm]
| 8: | > #define [mm]POST_H[/mm]
| 9: | >
| 10: | > ....
| 11: | >
| 12: | > #define [mm]//POST_H | [/mm]
>
> Dann habe ich dazu eine Datei post.cpp, in denen ich die
> Methoden zu post.h definiere:
>
> 1: | /* post.cpp */
| 2: | >
| 3: | > #include <iostream>
| 4: | > #include <string>
| 5: | > #include "post.h"
| 6: | >
| 7: | > ....
| 8: | >
| 9: | > |
>
> In post_main.cpp teste ich dann das Zusammenspiel der
> Dateien post.h und post.cpp:
>
> 1: | /* post_main.cpp */
| 2: | > #include <iostream>
| 3: | > #include <string>
| 4: | > #include "post.h"
| 5: | >
| 6: | > using namespace std;
| 7: | >
| 8: | > int main(void)
| 9: | > {
| 10: | > ...
| 11: | > } |
>
> Nun habe ich eine weitere Header-Datei versand.h, in der
> ich die Datei post.h inkludiere. Dort initialisiere ich die
> Konstante LAENGE, die direkt danach in der versand.h
> verwendet wird (deshalb wird sie hier initialisiert):
>
> 1: | /* versand.h */
| 2: | >
| 3: | > #include [mm]"...\Projektname\post.h"[/mm] //!
| 4: | >
| 5: | > #ifndef [mm]VERSAND_H[/mm]
| 6: | > #define [mm]VERSAND_H[/mm]
| 7: | >
| 8: | > const int LAENGE = 30; //feste Laenge der Arrays
| 9: | >
| 10: | > ...
| 11: | >
| 12: | > #endif //versand.h |
>
> In der Datei versand.cpp definiere ich die Methoden von
> versand.h. Hier deklariere ich außerdem die externen
> Variablen anzB und anzP:
>
> 1: | /* versand.cpp */
| 2: | > #include <iostream>
| 3: | > #include [mm]"...\Projektname\post.h"[/mm]
| 4: | > #include "versand.h"
| 5: | >
| 6: | > using namespace std;
| 7: | >
| 8: | > extern int anzB, anzP; //Anzahl der vorhandenen Briefe und
| 9: | > Pakete
| 10: | >
| 11: | > ...
| 12: | >
| 13: | > |
>
> In der versand_main.cpp teste ich dann das Zusammenspiel
> aller anderen Dateien. Hier initialisiere ich außerdem
> anzB und anzP:
>
> 1: | /* versand_main.cpp */
| 2: | > #include <iostream>
| 3: | > #include "versand.h"
| 4: | >
| 5: | > using namespace std;
| 6: | >
| 7: | > extern int anzB=0, anzP=0; //Anzahl der vorhandenen Briefe
| 8: | > und Pakete
| 9: | >
| 10: | > //Main-Programm
| 11: | > int main()
| 12: | > {
| 13: | > ...
| 14: | > } |
>
>
> Nun bekomme ich immer u.a. die Fehlermeldung
>
> Fehler 1 error LNK2019: Verweis auf nicht aufgelöstes
> externes Symbol ""public: bool __thiscall
> Adresse::einlesen(void)" (?einlesen@Adresse@@QAE_NXZ)" in
> Funktion ""public: bool __thiscall
> Post::einlesenAbsender(void)"
> (?einlesenAbsender@Post@@QAE_NXZ)".
>
> ausgespuckt. Das Programm geht damit garnicht erst zu
> starten.
>
> Was mache ich falsch? Wo ist mein Fehler? Ich probiere
> schon seit Stunden herum und komme nich weiter.
>
Die Fehlermeldung deutet daraufhin,
dass eine oder mehrere Bibliotheken fehlen.
Wahrscheinlich handelt es sich hier um die Library "ws2_32.lib".
> Da der gesamte Code sehr lang ist, möchte ich ungern alles
> hier posten.
>
> Ich würde mich freuen, wenn mir bitte jemand weiterhelfen
> könnte!
>
Gruss
MathePower
|
|
|
|
|
Hallo Mija,
> Ich habe gerade mal wegen dieser Bibliothek gegoogelt.
> Wenn ich
> #pragma comment(lib, "ws2_32.lib")
> unter den includes in der versand_main.cpp eingebe, dann
> klappts leider immer noch nicht.
> Auch wenn ich diese Zeile in allen Dateien unter die
> includes einfüge.
> Oder mache ich etwas falsch?
Das weiss ich nicht.
> Ich musste das noch nie verwenden, daher habe ich keine
> Ahnung davon.
>
> Kann mir bitte noch jemand weiterhelfen?
>
Füge diejenige Datei dem Projekt hinzu,
in dem die Funktion einlesen(void) implementiert ist.
> Achja, alle Dateien mit post sind übrigens in einem
> anderen Projekt. D.h. ich will die Klassen und deren
> Methoden aus post.h in versand inkludieren.
Gruss
MathePower
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 21:30 So 19.05.2013 | Autor: | Mija |
Danke, nachdem das auch erst nicht ging, habe ich es jetzt endlich hinbekommen! Danke dir!
|
|
|
|