Blöde Frage zu Objekten
-
Hallo,
ich habe eine ziemlich blöde Frage. Ich habe das Problem wenn ich in der Hauptdatei z.B. relais.cpp ein Objekt erstelle es in der Dialog Datei relaisDlg.cpp nicht sichtbar ist. Wo muß ich das Objekt erstellen, dass es in beiden Dateien sichbar ist?
-
du schreibst ein "extern CRelais object;" in eine Headerdatei, die von beiden .CPP's eingebunden wird (am sinnvollsten ist die "relais.h").
-
Danke für die schnelle Antwort, ich habe extern CSerial serial; in die Relais.h geschrieben und beim kompilieren und linken kommt dann folgende Fehlermeldung:
Relais_neuDlg.obj : error LNK2001: Nichtaufgeloestes externes Symbol "class CSerial serial" (?serial@@3VCSerial@@A)
Debug/Relais_neu.exe : fatal error LNK1120: 1 unaufgeloeste externe Verweise
Fehler beim Ausführen von link.exe.Eingefügt habe ich das ganze hier:
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000#ifndef __AFXWIN_H__
#error include 'stdafx.h' before including this file for PCH
#endif#include "resource.h" // Hauptsymbole
#include "Serial.h"/////////////////////////////////////////////////////////////////////////////
// CRelais_neuApp:
// Siehe Relais_neu.cpp für die Implementierung dieser Klasse
//extern CSerial serial;
class CRelais_neuApp : public CWinApp
{
public:
CRelais_neuApp();// Überladungen
// Vom Klassenassistenten generierte Überladungen virtueller Funktionen
//{{AFX_VIRTUAL(CRelais_neuApp)
public:
virtual BOOL InitInstance();//}}AFX_VIRTUAL
-
extern deklariert auch nur den Namen, ohne Speicher zu reservieren - zusätzlich benötigst du noch in genau einer Übersetzungseinheit (.CPP Datei) eine dazu passende Definition "CSerial serial;", die den nötigen Speicher für die Variable definiert.
-
Ok, vielen Dank. Jetzt geht es
