Linker Warnungen
-
Ich würde auch auf Problem bei den includes tippen. Zeig doch mal von den beteiligten Dateien die
#include-Abschnitte, und zwar sowohl von den Header- als auch den .cpp-Dateien.
Hast Du vielleicht irgendwo includes auf .cpp-Dateien?Gruß,
Alexander
-
Kein Problem,
das hier erzeugt die zwei Warnungen in TrwFunktionen.obj :TrwFunktionen.h:
#ifndef TRWFUNKTIONEN_H #define TRWFUNKTIONEN_H int Trw_CxOneConnect(); void Trw_CxOneDisConnect(); int Trw_DDConnect(); void Trw_DDDisConnect(); int Trw_CheckDirection(); int Trw_PrintCard(); int Trw_Enable(); int Trw_Disable(); int Trw_ReturnCard(); int Trw_getStatus(short* sStatusOut); int Trw_getFirmwareversion(); #endif //TRWFUNKIONEN_HTrwFunktionen.cpp:
//-- TRW Funktionen------- #include "TrwFunktionen.h" #include "uC3BoxMain.h" #include "c3class_TRWLine.h" #include "..\c3_Classes\class_C3Log\classC3Log.h" //- zum erstellen der Logdateien c3TrwLine* c3Line[8]; //6x c3Line-Objekt, 2x GrafikObjekt //--------------------------------------------------------------------------- int TrwConnect() { #ifdef _DEBUG myC3Log->DebugTrace("[TrwConnect] ->"); #endif ... } ...Die beiden anderen sehen ähnlich aus, sind allerdings Klassen, nicht nur eine Funktionssammlung.
-
Jetzt, wo ich den Header hier reingestellt habe, fällt mir auf, das der überhaupt keine '#includes' hat.
Braucht er auch nicht.Die .cpp Datei ist normal in das Projekt eingebunden.
-
Du solltest dir mal anschauen, wie #pragma hdrstop normalerweise verwendet wird und es auch entsprechend verwenden. Dann ist zumindest das erste Problem gelöst. Was du mit dem DebugHlpr_ASSERTE verbockt hast, kann ich nicht sagen. Ist mir noch nie passiert.
-
Dauerte ein wenig, aber jetzt habe ich in allen! Quelltextdateien die gleichen *.h (ist nur die vcl.h) vor dem #pragma hdrstop.
Das Ergebniss ist das selbe wie vorher, daran lag es also nicht.
-
Dabei fällt mir, weder Dialogs.hpp noch SHDocVw_TLB werden von mir direkt eingebunden, SHDocVw_TLB kommt mit TCppWebBrowser (wird vom IExplorer benötigt), nach Dialogs.hpp suche ich noch.
-
SHDocVw_TLB wird aber definitiv nicht von vcl.h inkludiert. Und wenn es nach dem #pragma hdrstop stünde, käme diese Meldung nicht. Daher: weitersuchen.
-
Es ist weg.
Alle Warnungen sind weg.Unter Projektoptionen 'Vorcompilierte Header' war der Defaulteintrag
'Header puffern'
Nachdem ich den Eintrag in 'ohne' geändert habe, waren alle Warnungen weg.Danke für die Tipps,
werd das jetzt mal noch ein wenig untersuchen.
-
SilentSurfer schrieb:
Unter Projektoptionen 'Vorcompilierte Header' war der Defaulteintrag
'Header puffern'Das ist normalerweise auch wünschenswert.
-
Das denke ich mir, allerdings scheint durch das Puffern irgendwas nicht mehr aktualisiert worden zu sein.
Wie gesagt, durch das ändern dieser Option verschwanden die Warnungen zu den Vorcompilierten Headern und die Warnungen über die Public Symbols, die doppelt sein sollten.
-
Welcher Dateiname war bzw. ist denn dort eingetragen?
Wenn da ein absoluter Pfad drinsteht, der nicht existiert, dann gibt's auch Probleme.
Allerdings gibt es dann normalerweise eine andere Warnung.Gruß,
Alexander
-
Hab gerad nachgeschaut,
da steht (stand) der Borland Defaultname drin:
$(BCB)\lib\vcl60.csmDas soll die Standarddatei für die Header sein (lt. BCB Hilfe)
Das Ding ist auf meinem Rechner 65 MB gross.
Wahrscheinlich kann ich es jetzt löschen.
-
hm, konnte das nicht auch passieren wenn man vor
#include <vcl.h> #pragma hdrstopbereits ein #include schreibt?
Bin mir da aber nicht sicher.
Auf jeden Fall wird dadurch die Zeit, die zum Kompilieren benötigt wird, stark erhöht.Grüße Joe_M.