Fehler beim Compilieren eines .net-Programmes



  • Hallo zusammen

    Ich habe eine neue Windows Anwendung unter VC7.1 angelegt und eine Library aus einem Programm, das noch nicht mit mangaged code unter Visual C++6.0 erstellt eingebunden.

    Wenn ich die Library nun mit compiliere erhalte ich eine lange Liste an Fehlern. 😕 😕 Die Fehler bekomme ich einfach nicht weg.

    Wenn ich die Library unter VC7.1 mit einer C++ Anwendung, die nach dem alten Schema programmiert wurde compiliere, dann klappt alles

    Anbei die Ausgabe des Compilers und hier ein Link zu meinem Projekt
    http://www.burger-web.com/Downloads/CPlusPlus/SocketTest.zip
    Das File heisst SocketTest.zip (32 KB) und enthält die C++-Files und die Projektdatei

    Über jeden Hinweis würde ich mich sehr freunen

    Beste Grüsse und vieln Dank im Voraus
    Geri

    PS: Die Liste ist ewig lang

    Files\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include\atlalloc.h(45) : error C2039: 'LocalAlloc' : is not a member of 'operatorglobal namespace''' C:\\Program Files\\Microsoft Visual Studio .NET 2003\\Vc7\\atlmfc\\include\\atlalloc.h(45) : error C2065: 'LMEM_FIXED' : undeclared identifier C:\\Program Files\\Microsoft Visual Studio .NET 2003\\Vc7\\atlmfc\\include\\atlalloc.h(45) : error C3861: 'LocalAlloc': identifier not found, even with argument-dependent lookup C:\\Program Files\\Microsoft Visual Studio .NET 2003\\Vc7\\atlmfc\\include\\atlalloc.h(49) : error C2039: 'LocalReAlloc' : is not a member of 'operatorglobal namespace'''
    C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include\atlalloc.h(49) : error C3861: 'LocalReAlloc': identifier not found, even with argument-dependent lookup
    C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include\atlalloc.h(53) : error C2039: 'LocalFree' : is not a member of 'operator``global namespace'''
    C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include\atlalloc.h(53) : error C3861: 'LocalFree': identifier not found, even with argument-dependent lookup
    C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include\atlalloc.h(318) : error C2146: syntax error : missing ';' before identifier 'm_abFixedBuffer'
    C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include\atlalloc.h(319) : see reference to class template instantiation 'ATL::CTempBuffer<T,t_nFixedBytes,Allocator>' being compiled
    C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include\atlalloc.h(318) : error C2501: 'ATL::CTempBuffer<T,t_nFixedBytes,Allocator>::BYTE' : missing storage-class or type specifiers
    C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include\atlalloc.h(318) : error C2501: 'ATL::CTempBuffer<T,t_nFixedBytes,Allocator>::m_abFixedBuffer' : missing storage-class or type specifiers
    C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include\atlalloc.h(330) : error C2065: 'SIZE_T' : undeclared identifier
    C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include\atlalloc.h(330) : error C2146: syntax error : missing ')' before identifier 'Size'
    C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include\atlalloc.h(330) : error C2433: '_AtlVerifyStackAvailable' : 'inline' not permitted on data declarations
    C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include\atlalloc.h(330) : error C2059: syntax error : ')'
    C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include\atlalloc.h(331) : error C2143: syntax error : missing ';' before '{'
    C



  • Ich würde mal sagen, da sind sehr viele Fehler drin... das erste ist, dass Du kein ATL einbindest, es aber von ServerSocket vorrausgesetzt wird...



  • Hallo Jochen

    Vielen Dank für Deinen Hinweis. Ich habe nun in den Compiler-Optionen unter General Uso of ATL den Wert: Static link to ATL gesetzt.

    Leider komme ich das Projekt immer noch nicht zum Compilieren 😕 😕 Da wird man fast verrückt

    Beste Grüsse
    Geri

    PS: interessante Web-Seite hast du da:)



  • Jochen Kalmbach schrieb:

    Ich würde mal sagen, da sind sehr viele Fehler drin... das erste ist, dass Du kein ATL einbindest, es aber von ServerSocket vorrausgesetzt wird...

    Jochen meinte hiermit eher das du mal prüfen sollst ob die Headerdateien der benötigten ATL in deinem Projekt eingebunden sind...



  • Hallo guenni81

    Vielen Dank für Deine Hilfe. Nun habe ich in die beiden Libraries, die ich eingebunden habe die Anweisung: #include "atlbase.h" geschrieben nun sieht es bereits um Vieles besser aus. 🙂

    Nun erscheint aber eine neue Meldung:
    fatal error C1189: #Error : include 'stdafx.h' before including this file for PCH
    Im Web habe ich ich leider keine Lösung gefunden. Muss ich da irgendwie die Compiler-Direktiven änderen 😕 😕

    Beste Grüsse

    Geri



  • In den Eigenschaften der Datei in der der Fehlerauftritt stellst du ein, dass er keine vorkompilierten Header verwenden soll, dann sollte es tun.



  • Hallo dEUs

    Vielen Dank für Deine Hilfe! Über den Projekt-Explorer habe ich geschaut, dass vorcompilierte Header ausgeschaletet sind. Das war auch so. 😕 ..

    Hast du bitte vielleicht noch eine Idee die ich probieren könnte?

    Freundliche Grüsse und nochmals vielen Dank

    Geri



  • Hallo zusammen

    Nun habe ich es geschafft, das Programm zu compilieren. Der Fehler lag daran, dass ich noch ein header-File der "alten" VC 6- Anwendung eingebunden hatte und mit nicht aufgefallen ist, es zu entfernen. 🙂

    Nun habe ich aber ein anderes Problem. Wenn ich die Programmzeile

    SOCKET sock = socket(nFamily, nType, 0);
    

    nFamily = 1; = AF_INET
    nType = SOCK_STREAM

    Ich frage mich, was man hier noch falsch machen kann?

    erhalte ich den Rückgabewert 10093: Socket error (#10093): Successful WSAStartup not yet performed. 😕

    Im inet habe ich bereits gesucht, bin aber nicht schlau daraus geworden. Kann mir hier bitte vielleicht jemand weiter helfen.

    Vielen Dank und freundliche Grüsse
    Geri



  • Die Fehlermeldung ist doch sehr deutlich. WSAStartup ist eine Funktion.



  • Hi Geri,

    hast du am Anfang deiner Anwendung

    WSADATA wsaData;
    int err;
    
    wVersionRequested = MAKEWORD( 2, 2 );
    
    err = WSAStartup( wVersionRequested, &wsaData );
    ...
    

    aufgerufen? Wenn nicht, wie oben beschrieben aufrufen. Dann sollte es tun...

    Hier ein Link zu WSAStartup

    Gruss
    Tobi



  • Hallo Tobi und 10093

    Vielen Dank für Eure Antwort, es funktioniert nun!!!!:):)

    Ich empfange Zeichen:)

    Nun habe ich aber ein neues Problem:

    ich habe zwei Klassen

    class CSocketComm
    {
    
       ...
       void CSocketComm::Run()
       virtual void OnDataReceived(const LPBYTE lpBuffer, DWORD dwCount);
    }
    
    class CSocketManager : public CSocketComm  
    {
    public:
    	CSocketManager();
    	virtual ~CSocketManager();
    	virtual void OnDataReceived(const LPBYTE lpBuffer, DWORD dwCount);
    }
    
    CSocketManager mySocket;
    

    Die Methode Run wird erfolgreich ausgeführt und wenn Daten empfangen werden darin OnDataReceived aufgerufen. Die empfangenen Zeichen stehen auch tatsächlich in einem Puffer (geprüft mit dem Debugger).

    Das Programm stürzt aber mit der Fehlermeldung:
    "There is no source code available for the current location" 😕 😕

    OnDataReceived habe ich im Socket-Manager aber implementiert. Falls ich das Objektorientierte Konzept richtig verstanden habe, dann müsse OnDataReceived von mySocket doch aufgerufen werden??

    Ach ja, vielleicht ist das noch wichtig. CSocketComm::Run(), also die BasisKlasse con CSocketManager läuft in einer Thread und ruft dort OnDataReceived auf.

    Vielen Dank für Eure Hilfestellung
    Geri



  • Hallo zusammen

    Nun ist mir noch etwas kurioses aufgefallen.
    1.) lege eine Variable der Klasse CSocketManager an z.B. TestSock
    2.) schreibe z.B. in eien Button click-Methode TestSock->OnDataReceive
    3.) setze einen Haltepunkt darauf
    4.) Starte Programm und drücke den Button

    dann erhalte ich auch den Fehler "There is no source code available for the current location.

    Wenn ich keinen Haltepunkt darauf setze, dann passiert gar nichts.😕 😕 😕

    Anbei das Programm
    Weiss hier bitte jemand weiter?
    http://www.burger-web.com/Downloads/CPlusPlus/SocketTest2.zip

    Vielen Dank und beste Grüsse
    Geri


Anmelden zum Antworten