Funktion-Aufruf anderer cpp Dateien
-
Hallo,
habe mit meinem Dialogbasiertem Programm BiBi unter anderem dieses Problem, und zwar habe ich dem Projekt eine Header Datei TreeBibelinhaltsverzeichnis.h und eine entsprechende cpp Datei mit dem zugehörigen Code hinzugefügt.
Mit der Check box in BiBiDlg.cpp will ich die Funktion treeBibelinhaltsverzeichnis() aufrufen, da bekomm ich aber beim Linking lediglich die Fehlermeldung "undeclared identifier". Hab es auch schon mit TreeBibelinhaltsverzeichnis.treeBibelinhaltsverzeichnis(), dann bekomm ich die Fehlermeldung "Syntaxerror missing ";" before ".".
Hab dazu schon überprüft, ob es irgendwelche Rechtschreibfehler gibt, die Klassen sind auch richtig mit ";" abgeschlossen, die Teilprogramme laufen für sich allein ohne Fehler und die Header Dateien sind eingebunden.
Also hat jemand eine Idee was ich übersehen haben könnte und warum meine Funktion nicht aufgerufen bzw. die entsprechende cpp-Datei nicht gefunden wir?
-
Hast Du auch in BiBiDlg.cpp die Datei TreeBibelinhaltsverzeichnis.h included?
-
Hast Du auch in BiBiDlg.cpp die Datei TreeBibelinhaltsverzeichnis.h included?
Ja, hab ich auch da included, und um auf Nummer sicher zugehen auch in der BiBi.h.
-
Hi
Wo liegt denn diese cpp-Datei? Das musst du mit angeben.Extras->Optionen->Verzeichnisse
Ausserdem die Datei am besten dem Projekt hinzufügen. Pojekt->Dem Projekt hinzufügen->Dateien
-
Die cpp Datei befindet sich schon im gleichen Verzeichnis mit den anderen Dateien.
Außerdem ist die Datei schon dem Projekt zugefügt.
Von daher müßte die Funktion eigentlich aufgerufen und gefunden werden können.
-
bist du sicher das in der cpp der fehlende bezeichner felht ? vieleicht ist der ja in einer ganz anderen lib/dll etc ?
Sind alle Dateien auch in deiner Solution drinnen ? (Also werden gebuilded? (obj dateien) )
1.h
#include "2.h" #pragma once class test {.. deklarationen ..};1.cpp
#include "stdafx.h" #include "1.h" .. definitionen ..2.h
#pragma once class test2 {.. deklarationen ..};2.cpp
#include "stdafx.h" #include "2.h" .. definitionen ..Edit: Precompiled Header in cpp Dateien verschoben
-
Hallo,
In der cpp fehlt kein Bezeichner, hab das nochmal nachgeschaut.
Bekomm inzwischen auch eine andere Fehlermeldung, diesmal nur beim Builden der cpp, "...unexpected end of file while looking for precompiled header directiv...", hab dazu auch schon ausgibieg die Hilfe durchsucht, aber nichts gefunden, was mir da weiter helfen könnte, müßte alles soweit stimmen.
Zum Testen, hab ich nochmal über den class wizard, mir eine neue Klasse erschaffen (als CTreeCtrl), die gleich ins Projekt eingebaut wurde, mit zugehöriger cpp. Die läuft ohne Probleme, nur wenn ich von dieser Funktionen in der BiBiDlg.cpp aufrufe bekomm ich wieder die Fehlermeldung "undeclared identifier" beim Linken.
Gibt's noch eine andere Möglichkeit, eine (reine) cpp (ohne zugehörige Header-Datei) im Dialogbasiertem Projekt zuzufügen und deren Funktionen in der BiBiDlg.cpp zu nutzen?
Würde das ganze schon sehr übersichtlicher gestalten, wenn ich nicht alles direkt in die BiBiDlg.cpp schreiben müßte.
-
hm da hab ich falsch kopiert.. musst anstatt in jeder h datei in jeder cpp datei "include "stdafx.h"" stehen haben. (Das ist der Precompiled Header...
Und der fehler von vorher ist darauf zurückzuführen das deine cpp dateien nicht compliert wurden (also nicht im Projekt hinzugefügt waren)
-
"stdafx.h" steht schon in meinen cpp Dateien am Anfang. Fehlermeldung gibt es keine mehr, nur beim Linken, wenn ich die Funktion die in einer anderen cpp steht in der BiBiDlg.cpp aufrufen will. Warum geht das immer noch nicht? Wo liegt mein Fehler?
-
Schau doch bitte mal in dein Debug/Release Verzeichnis ob da eine TreeBibelinhaltsverzeichnis.obj datei ist. Wenn nicht füge die h und cpp Datei von TreeBibelinhaltsverzeichnis zu deinem Projekt hinzu oder builde sie manuell, einfaches includieren reicht nicht.
-
Danke für diesen Tip, aber daran hat es auch nicht gelegen, im Debug Verzeichnis gibt es das TreeBibelinhaltsverzeichnis.obj.
Vielleicht hat meine Visual C++ Version, ja ein Eigenleben entwickelt, und läßt keine Funktionen anderer cpp zu, obwohl diese zum Projekt gehören.