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
GeriPS: 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 'operator
global 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 'operator
global 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
GeriPS: 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 änderenBeste 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_STREAMIch 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...
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 Buttondann 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.zipVielen Dank und beste Grüsse
Geri