Linker Fehler
-
Hmm, zugreifen tu ich eigentlich nirgends direkt, versuch gerad stück für stück vorwärts zu kommen... Abgeleitet hab ich sie meines Wissens auch nicht, der zum OpenDialogU gehörende Header sieht folgendermaßen aus:
//--------------------------------------------------------------------------- #ifndef OpenDialogUH #define OpenDialogUH #include <dialogs.hpp> //--------------------------------------------------------------------------- class TMyOpenDialog : public TOpenDialog { __published: __fastcall TMyOpenDialog( TComponent *Owner); private: protected: public: }; #endifHabe ich hier einen Fehler gemacht?
Grüße
Sascha
-
Hallo
habe deinen Header komplett so übernommen und bekomme keinen Fehler.
Allerdings sollte das eher so aussehen :class TMyOpenDialog : public TOpenDialog { private: protected: public: __fastcall TMyOpenDialog( TComponent *Owner); };Linker-Fehler liegen (grad bei unresolved externel) eher in den Implementationsdateien.
bis bald
akari
-
Hy,
also der Fehler tritt in der OPENDIALOGU.OBJ auf, würd von daher drauf tippen das der Fehler auch in der unit steckt und nicht im aufrufenden Objekt, oder?Der Code der OpenDialog.cpp der im ersten Thread fehlte ist folgender:
#pragma hdrstop #include "OpenDialogU.h"Aber darin steckt wohl eher kein Fehler oder?? Versuch jetzt einfach mal die Unit unter einem anderem Namen neu zu erstellen...

Grüße
Sascha
-
Hallo
also ich habe dein Beispiel komplett nachgebaut und bekomme immer noch ekeinen Fehler.
Ich empfehle als letztes noch Projekt/Alle Projekte erzeugen um alle Objekt-Dateien neu zu erzeugen.bis bald
akari
-
Hat leider nichts geändert...

Kann es daran liegen das die beiden Units in unterschiedlichen Verzeichnissen liegen?
Projekt\Ladeoptimierung\GUI\"hier FrameButton.cpp"
Projekt\Ladeoptimierung\ProgLogik\"hier OpenDialog.cpp"Grüße
Sascha
-
Hallo
wenn er die Dateien nicht findet kommen andere Fehlermeldungen.
Bau doch mal ein komplett neues Projekt mit dem hier gezeigten Minimalcode (also so wie ich das gemacht habe)bis bald
akari
-
So, hab das ganze Projekt jetzt mal in der minimal Version nachgebaut und siehe da... gleicher Fehler

Hier einmal der komplette Code der beiden Files, vielleicht mach ich da ja irgendwo 'nen dummen Fehler?!?
Unit1.h
//--------------------------------------------------------------------------- #ifndef Unit1H #define Unit1H //--------------------------------------------------------------------------- #include <Classes.hpp> #include <Controls.hpp> #include <StdCtrls.hpp> #include <Forms.hpp> #include "Unit2.h" //--------------------------------------------------------------------------- class TForm1 : public TForm { __published: // IDE-managed Components TButton *Button1; void __fastcall Button1Click(TObject *Sender); private: // User declarations public: // User declarations __fastcall TForm1(TComponent* Owner); }; //--------------------------------------------------------------------------- extern PACKAGE TForm1 *Form1; //--------------------------------------------------------------------------- #endifUnit1.cpp
//--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { TMyOpenDialog *pOpenDialog = new TMyOpenDialog( Owner); pOpenDialog->Execute( ); } //---------------------------------------------------------------------------Unit2.h
//--------------------------------------------------------------------------- #ifndef Unit2H #define Unit2H #include <dialogs.hpp> //--------------------------------------------------------------------------- class TMyOpenDialog :public TOpenDialog { public: __fastcall TMyOpenDialog(TComponent *Owner); }; #endifUnit2.cpp
//--------------------------------------------------------------------------- #pragma hdrstop #include "Unit2.h" //--------------------------------------------------------------------------- #pragma package(smart_init) __fastcall TMyOpenDialog::TMyOpenDialog( TComponent *Owner) :TOpenDialog( Owner) { this->DefaultExt="txt"; this->Filter="Text Dateien (*.txt)|*.TXT"; }Grüße Sascha
-
Das Minimalbeispiel läßt sich bei mir fehlerfrei kompilieren und ausführen (BCB 6).
-
Hallo
Bei mir auch (BCB 5).
Da ja offenbar eine VCL-interne Funktion angemerkert wird, bleibt noch eine komplette Neuinstallation des Builders. Außerdem den aktuellsten Patch für deine Version einspielen.bis bald
akari
-
Supi, bei allen läuft's nur bei mir nicht...

Benutze das Borland Beveloper Studio 2006, kann es daran liegen?
Oder an meinen Compiler-Einstellungen? Wie sollten diese denn aussehen? Kenn mich da leider nicht aus...Grüße
Sascha