WSAStartup(MAKEWORD(2,2),&wsa); geht nicht???
-
-> schrieb:
Ws2_32.lib in den Linkereinstellungen hinzufügen
...hab ich schon, geht trotzdem nicht, ausser ich habs falsch gemacht:
Projekte -> Settings ->Link -> Object/Library/Modules/ Ws2_32.lib eintragen zu den anderen ohne "," oder ";"stimmt das?
Wenn ja muß noch was anderes nicht stimmen -> geht nämlich nicht...
-
Evtl. muss du noch windows.h einbinden
-
ich glaube dem linker sind die header dateien egal:]
versuch mal:
#pragma comment(lib,"wsock32")
-
Es ist aber verwunderlich, dass er auch WinMain nicht mehr auflösen kann
Hast du vielleicht sonst noch was geändert - z.B. Libs aus der "Link-Liste" gelöscht
-
Hast du vielleicht ein Konsolenproject erstellt?
-
Oder ist der obige Code gar kein Ausschnitt, sondern die gesamte Datei?
-
nein nein das ist nicht die gesamte datei, sonst dürfte alles stimmen, ich habs in einem mfc Projekt laufen lassen wollen, ging aber nicht, dann hab ich s nach einem tutorial in eine Konsole gesteckt, die machen das dort auch.
Wenn ich #pragma comment(lib,"wsock32") einbinde geht´s auch nicht und wenn ich die windows.h dazugebe bekomme ich sogar um die 60 Fehler....
-
Wenn du WinMain verwendest musst du aber eine Win32-Anwendung und keine Konsolen-Anwendung erstellen
-
Ah... werd ich gleich umstellen
danke erstmal
l00P
-
...aber ich verwende ja gar kein WinMain denke ich oder?
Also das ist der ganze Code in einer Konsolenanwendung:
#include <winsock2.h> #include <stdio.h> #include "main.h" int main() { long rc; rc=startWinsock(); if(rc!=0) { printf("Fehler: startWinsock, fehler code: %d\n",rc); return 1; } else { printf("Winsock gestartet!\n"); } return 0; } int startWinsock(void) { WSADATA wsa; return WSAStartup(MAKEWORD(2,2),&wsa); }
-
Dann ist es wohl gerade anders herum
:
Du hast anstelle einer Konsolen-Anwendung eine Win32-Anwendung erstelltDie Lib hast du ja jetzt gelinkt, oder? Was hast du in main.h stehen? Was für Fehler bekommst du noch?
-
Also aktuell habe ich eine Konsolenanwendung erstellt mit diesem obigen main.cpp. Der komplette code steht oben. In der main.h steht nur
int startWinsock(void); sonst nichts.Die "Ws2_32.lib" habe ich unter Projects->settings->link->Objects/modules.... dazugeschrieben.
Folgende Fehler kommen:
-------------------Configuration: wsaTest - Win32 Debug-------------------- Linking... LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _WinMain@16 Debug/wsaTest.exe : fatal error LNK1120: 1 unresolved externals Error executing link.exe. wsaTest.exe - 2 error(s), 0 warning(s)
-
Du musst aus der main() eine WinMain() machen.
-
wenn ich draus eine winmain() mache kommen folgende fehler:
--------------------Configuration: wsaTest - Win32 Debug-------------------- Compiling... main.cpp C:\Wuff\siesta\thesieata\wsaTest\main.cpp(9) : warning C4007: 'WinMain' : must be '__stdcall' C:\Wuff\siesta\thesieata\wsaTest\main.cpp(9) : error C2731: 'WinMain' : function cannot be overloaded C:\Wuff\siesta\thesieata\wsaTest\main.cpp(7) : see declaration of 'WinMain' Error executing cl.exe. wsaTest.exe - 1 error(s), 1 warning(s)
-
Bei einer Konsolen-Anwendung ist aber main eigentlich schon richtig! WinMain in einer Win32-Anwendung sieht so aus:
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
Was steht bei dir unter Projekt - Einstellungen - Linker im Feld Projekt Optionen bei subsytem?
/subsystem:console oder /subsystem:windows
-
flenders schrieb:
Bei einer Konsolen-Anwendung ist aber main eigentlich schon richtig! WinMain in einer Win32-Anwendung sieht so aus:
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
Was steht bei dir unter Projekt - Einstellungen - Linker im Feld Projekt Optionen bei subsytem?
/subsystem:console oder /subsystem:windows...da steht: /subsystem:windows /incremental:yes
-
Dann hast du eine Win32-Anwendung erstellt, oder etwas an den Einstellungen geändert
Also entweder auf subsystem:console ändern oder ein neues Projekt erstellen und Konsolen-Anwendung auswählen und den Quelltext rumkopieren
-
hurra es geht...so ein dummer fehler!!! ärger
Hab tatsächlich eine win32 Anwendung erstellt...
Danke für die hilfe
l00P
-
Oder einfach den /subsysten:blah Teil loeschen, dann geht naemlich ploetzlich beides