EDIT: Falsche Form gestartet
-
Hallo ich habe ein Programm mit 3 Formen.
Form 1 heißt MAIN
Form 2 heißt FILEC
Form 3 heißt FORMSAVEDATAbeim hinzufügen von Form 2 ging alles gut und es geht
aber als ich nummer 3 hinzugefügt habe kam folgende Meldung vom Compiler:[ILINK32 Fehler] Error: Nicht auflösbares externes '_Form1' referenziert von C:\DOKUMENTE UND EINSTELLUNGEN\TIM\EIGENE DATEIEN\RAD STUDIO\PROJEKTE\DEBUG\FILECODEX2PROJECT.OBJ
und
[ILINK32 Fehler] Error: Nicht auflösbares externes 'TForm1::' referenziert von C:\DOKUMENTE UND EINSTELLUNGEN\TIM\EIGENE DATEIEN\RAD STUDIO\PROJEKTE\DEBUG\FILECODEX2PROJECT.OBJ
Ich weiß nicht was das heißen soll
.
ich lasse in den hauptteil des Progs die header der anderen Formen includen.Bitte um Hilfe Danke
-
Greifst Du von Form3 direkt auf Form1 zu?
Dann muss auch rückwärts includiert werden.Gruss
Frank
-
nein ich greife nur von 1 auf 3 zu. (bzw von 1 auf 2)
1 ist in 3 nicht (mehr) includiert.
was ich komisch finde ist dass er mir das ausgibt:C:\DOKUMENTE UND EINSTELLUNGEN\TIM\EIGENE DATEIEN\RAD STUDIO\PROJEKTE\DEBUG*FILECODEX2PROJECT.OBJ*
weil das ist die zweite form, an der hab ich nix geändert
-
noch mehr infos ? hier bitte:
so lasse ich die formen aufrufen:
FORMSAVEDATA = new FORMSAVEDATA(Application); FORMSAVEDATA->ShowModal(); delete FORMSAVEDATA;
oder für nummer 2
FILEC = new TFILEC(Application); FILEC->ShowModal(); delete FILEC;
und die includes in der main cpp
#include "CodeX2combined.h" #include "FileCodeX2.h" #include "SAVEDATA.h"
mehr nicht
EDIT ein c zu viel
-
Tim06TR schrieb:
[ILINK32 Fehler] Error: Nicht auflösbares externes '_Form1' referenziert von C:\DOKUMENTE UND EINSTELLUNGEN\TIM\EIGENE DATEIEN\RAD STUDIO\PROJEKTE\DEBUG\FILECODEX2PROJECT.OBJ
Das Modul "Filecodex2project.cpp" referenziert die globale Variable "Form1" zu, jedoch wird diese nirgendwo definiert.
Tim06TR schrieb:
[ILINK32 Fehler] Error: Nicht auflösbares externes 'TForm1::' referenziert von C:\DOKUMENTE UND EINSTELLUNGEN\TIM\EIGENE DATEIEN\RAD STUDIO\PROJEKTE\DEBUG\FILECODEX2PROJECT.OBJ
Das Modul "Filecodex2project.cpp" referenziert die VMT der Klasse TForm1, jedoch wird diese nirgendwo definiert.
Meine Vermutung: "Filecodex2project.cpp" ist deine Projektdatei (also diejenige Datei, die WinMain() enthält) und verweist auf TForm1, jedoch hast du das Unit, das TForm1 enthält, nicht dem Projekt hinzugefügt.
DerAltenburger schrieb:
Greifst Du von Form3 direkt auf Form1 zu?
Dann muss auch rückwärts includiert werden.Das kann bei Linkerfehlern als Ursache ausgeschlossen werden
-
verdammt du hattest recht danke da stand:
USEFORM("FileCodeX2.cpp", Form1);
aber das ist ja falsch und muss:
USEFORM("FileCodeX2.cpp", FILEC);
heißen jetzt compiliert er danke
-
huch was ist nun kaputt ?
er kompiliert jetzt Filec Form als hauptteil.
was hab ich jeztz verändert ? eig nur
die FileCodeX2Project.cpp//--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include <tchar.h> //--------------------------------------------------------------------------- USEFORM("FileCodeX2.cpp", FILEC); //--------------------------------------------------------------------------- WINAPI _tWinMain(HINSTANCE, HINSTANCE, LPTSTR, int) { try { Application->Initialize(); Application->MainFormOnTaskBar = true; Application->CreateForm(__classid(TFILEC), &FILEC); Application->Run(); } catch (Exception &exception) { Application->ShowException(&exception); } catch (...) { try { throw Exception(""); } catch (Exception &exception) { Application->ShowException(&exception); } } return 0; } //---------------------------------------------------------------------------
so sieht sie jetzt aus, er soll aber die andere starten...
hmpf
-
Menü "Projekt->Optionen" den Kartenreiter "Formulare" auswählen, da in der Combobox "Hauptformular" die gewünschte Formularklasse auswählen, fertig.
-