Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Fehler beim einbinden einer Headerdatei

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
19.10.2007, 14:54 Uhr
~abrissbirne
Gast


Hallo,
ich möchte einige Anwendungsbeispiele nachprogrammieren. Dazu habe ich vom Hersteller ein PDF und eine CD mit Dateien und Treiber geschickt bekommen. Ich erstelle mit Visual C++ 6.0 eine neue Konsolenanwendung. In dem PDF steht nun ich müsse als erstes die benötigte Headerdatei xem3001.h sowie die benötigte Dll einbinden:


C++:
#include "xem3001.h"
#pragma comment(lib, "XemDll.lib")



ICh mache noch nichts weiter und möchte die Anwendung kompilieren, dann erhalte ich folgenden Fehlercode:

C++:
c:\programme...\xem3001.h(368): error C2258: Ungültige Syntax fuer rein virtuelle Methode; '=0' erforderlich
c:\programme...\xem3001.h(368): error C2252: 'm_nClkFrequency' : Nur Funktionen koennen rein virtuell deklariert werden
c:\programme...\xem3001.h(369): error C2258: Ungültige Syntax fuer rein virtuelle Methode; '=0' erforderlich
c:\programme...\xem3001.h(369): error C2252: 'm_iMaxSerialNumber' : Nur Funktionen koennen rein virtuell deklariert werden


Wie kann es sein, dass ein Header bereits 4 Fehlermeldungen bringt, obwohl ich noch nichts gemacht habe? Und wie kann ich diese beseitigen? HAb mal versucht die Werte auf 0 zu setzen, aber dann passiert das selbe in grün. Bin für jede Hilfe Dankbar.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
19.10.2007, 15:54 Uhr
Tommix



Hi,
zeig mal die betreffenden Zeilen (368, 369) und ein bißchen drumherum aus xem3001.h.

- Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
19.10.2007, 16:13 Uhr
~abrissbirne
Gast


Hier mal ein kleiner Auszug aus der Header:

C++:
void GetOutput(const int iIONumber, bool &activated);

    /**
     * \brief read input signals
     * \param iIONumber pin number      
     */

    //void EnableTriggerOut(INTERRUPTPROC callback, void *context);
    //void DisableTriggerOut();
    /*
    void GetIntReg (int &reg)
    {
        reg = m_InputRegister1;
    }*/

    //void XemDebug();
protected:
    void EnterCs(void)     { if (m_Cs) EnterCriticalSection (m_Cs); }
    void LeaveCs(void)  { if (m_Cs) LeaveCriticalSection (m_Cs); }
    int m_InputRegister1;
    void *m_pContext;
private:
    HANDLE m_hThread;
    CRITICAL_SECTION *m_Cs;

    INTERRUPTPROC m_TriggerCallback;
    bool m_runEventTimer;
    //xem3001 declaration
    // okCUsbXEM3001v2 *xem;
    okCUsbFrontPanel *xem;
    //xem3001 onboard clock frequency
(368)    static const int m_nClkFrequency = 100000000;
(369)    static const int m_iMaxSerialNumber = 64;

    //I/O-buffer
    unsigned int m_iOutBuffer;    
    unsigned int m_iInBuffer;

    //channel activation flags
    unsigned char m_cChannelActivationFlags;    
    bool m_bChannelConfigured[4];
    bool m_bChannelWrappedAround[4];
    
    //trigger flag
    bool m_bLockinTriggerSig;
    bool m_bPrePulseMode;

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
19.10.2007, 16:36 Uhr
Tommix



Ja:

C++:
static const int m_nClkFrequency = 100000000;


VS2005 schluckt das, in VC 6 müßtest Du

C++:
static const int m_nClkFrequency;

// und in der Implementierung
const int classname::m_nClkFrequency = 100000000;


schreiben, was schlecht ist, da Du ja den Quelltext nicht hast. Ob das Erste nun eine Erweiterung oder standardkonform ist, weiß ich nicht. Ist die Lib überhaupt für VC 6 gedacht?

- Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
19.10.2007, 21:43 Uhr
~abrissbirne
Gast


Auf der Arbeit habe ich es auch versucht. Selbes Problem nur mit dem Unterschied, dass ich dort sogar VS2005 hab. Auf meinem Privaten Rechner hab ich VC 6.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
19.10.2007, 22:54 Uhr
0xdeadbeef
Gott
(Operator)


Wenn mich nicht alles täuscht, ist sowas nur in templates möglich. Allerdings hätte ich da eher Linker- als Compilerfehler erwartet...
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
20.10.2007, 09:01 Uhr
Tommix





C++:
class foo
{
public:
    static const int bar = 123;
};


kann ich mit VC 2005 complilieren.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
21.10.2007, 19:21 Uhr
~abrissbirne
Gast


Sorry, bin nicht ganz so tief in dem Thema. Was heisst das nu für mein Problem?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
21.10.2007, 22:06 Uhr
FloSoft
Medialer Over-Flow
(Administrator)



Zitat von ~abrissbirne:
Sorry, bin nicht ganz so tief in dem Thema. Was heisst das nu für mein Problem?

das der VC6 uralt ist
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
21.10.2007, 23:58 Uhr
0xdeadbeef
Gott
(Operator)


Dass der VC6 kein C++-Compiler ist.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: