Winsock-Problem: Neudefinition-Fehlermeldungen...



  • Hi zusammen,

    tut mir leid schon wieder mit einer Frage nerven zu müssen.

    Es geht bei usnerem Projekt (Schulprojekt) ja darum Schiffe Versenken über Netzwerk zu programmieren. Das ganze zu dritt. Ich war dabei für die Oberfläche & Spielsteuerung verantwortlich.

    Nun habe ich den Netzwerklteil von meim Teamkameraden bekommen. Auch er hat ein Klasse erstellt und nun wollte ich diese Einbauen, aber es will nicht funktionieren.

    Hier einmal den Header & Quellcode, den ich bekommen habe:

    // SV_Netzwerkschnittstelle.h
    
    #pragma once
    #include <windows.h>
    using namespace System;
    
    	public class NetzwerkSchnittstelle
    	{
    		// TODO: Die Methoden für diese Klasse hier hinzufügen.
    	  public:	    
    		long startWinsock();//MUSS immer ganz am anfang aufgerufen werden, sonnst sind keine Winsock operationen verfügbar
    
    		long starteServer(void);
    		char* gibEigeneIP();
    		long verbindeMitServer(char* ip);
    
    		long sendeName(char* name);
    		long sendeChat(char* msg);
    		long sendeAngriff(int, int);
    		long sendeBereit(void);
    		long sendeFeedback(int,bool,bool);
    		long empfange(void);
    
    	  private:
    		long decode(int);
    		int gibzahlanderstelle(int);
    		char buf[256];
    		WSADATA wsaData;
    		SOCKET connectedSocket;
    		SOCKADDR_IN addr;
    		fd_set fdSetRead;
    		TIMEVAL timeout;
    
    	};
    
    // Dies ist die Haupt-DLL.
    
    #include "stdafx.h"
    #include <winsock2.h>
    #include "SV_Netzwerkschnittstelle.h"
    #include "Steuerung.h"
    
      long NetzwerkSchnittstelle::startWinsock(void){
    	  long rc; 
    	  rc=WSAStartup(MAKEWORD(2,0),&wsaData); 
    	  return rc;
      }
    
    [...] usw.
    

    Nun habe ich das ganze implimentiert und so werden die in der Deklaration verwendeten Datentypen wie WSADATA, SOCKET, SOCKADDR_IN usw. nicht bekannt sind.

    Na klar, hab ich mir gedacht, musst im Header auch die winsock2.h includen. Gesagt, getan - Funktioniert nicht:

    34 solche fehler:

    error C2371: 'IDataObject': Neudefinition; unterschiedliche Basistypen
    

    Google Recherche ergab, dass man nur Windows.h includieren soll und dann winsock2.h weglassen. Hilft aber auch nichts.

    Habt ihr ne Lösung?

    Danke schonmal

    Gruß
    Hirsch



  • Ist /clr bei den Projekt Settings gesetzt?
    Wenn ja, deaktivieren.
    Simon

    Edit:
    Die Problematik um IDataObject kann hier nachgelesen werden:
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-209251-and-highlight-is-idataobject.html


Anmelden zum Antworten