VS2017 dev. cmd erzeugt keine .exe



  • Hallo,

    ich habe ein Programm welches mit Sockets arbeitet, in der IDE (Visual Studio 2017) lässt es sich über den Local Windows Debugger super öffnen & macht keine Probleme. Nun will ich meine beiden Programme "Server & Client" starten, daher versuche ich es mit der "Developer Command Prompt for VS 2017" jedoch erhalte ich hier folgende Fehler:

    Microsoft (R) C/C++-Optimierungscompiler Version 19.16.27031.1 für x86
    Copyright (C) Microsoft Corporation. Alle Rechte vorbehalten.

    SERVER_V0_NICE.c
    SERVER_V0_NICE.c(117): warning C4047: "Funktion": Anzahl der Dereferenzierungen bei "const char *const " und "int" unterschiedlich
    SERVER_V0_NICE.c(117): warning C4024: "printf": unterschiedliche Typen für formalen und übergebenen Parameter 1
    Microsoft (R) Incremental Linker Version 14.16.27031.1
    Copyright (C) Microsoft Corporation. All rights reserved.

    /out:SERVER_V0_NICE.exe
    SERVER_V0_NICE.obj
    SERVER_V0_NICE.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_accept@12" in Funktion "_main".
    SERVER_V0_NICE.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_bind@12" in Funktion "_main".
    SERVER_V0_NICE.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_closesocket@4" in Funktion "_main".
    SERVER_V0_NICE.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_htonl@4" in Funktion "_main".
    SERVER_V0_NICE.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_htons@4" in Funktion "_main".
    SERVER_V0_NICE.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_inet_ntoa@4" in Funktion "_main".
    SERVER_V0_NICE.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_listen@8" in Funktion "_main".
    SERVER_V0_NICE.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_socket@12" in Funktion "_main".
    SERVER_V0_NICE.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_WSAStartup@8" in Funktion "_main".
    SERVER_V0_NICE.exe : fatal error LNK1120: 9 nicht aufgelöste Externe

    Weiß hier jemand eine Lösung?
    LG
    Alex



  • Was genau machst du da?



  • Scheint mir so, als würde da eine Bibliothek zum Linken fehlen. Schnelles googeln liefert die Ws2_32.lib, siehe Beispielcode auf https://docs.microsoft.com/en-us/windows/desktop/api/winsock2/nf-winsock2-socket (ich bin aber kein Windows-Nutzer)

    Und was verursacht deine Warnungen (Code!)? Ich habe auch gern alle Warnungen beseitigt!



  • Es scheint nicht nur so. Es ist so. Die "ws2_32" liefert alle Socketfunktionalitäten unter Windows. Die muss gelinked werden.



  • @BlindRob sagte in VS2017 dev. cmd erzeugt keine .exe:

    Weiß hier jemand eine Lösung?

    Das "Problem" an Deiner Vorgehensweise ist, daß Du offenbar den Compiler (cl.exe) per Hand aufrufst. Die ws2_32.lib hast Du aber höchstwahrscheinlich in den Linkereinstellungen des Projekts eingetragen. Davon weiß der Compiler & Linker nichts wenn Du ihm nur den Code fütterst. Ich gehe auch davon aus, daß Du Dein Projekt über die Befehlszeile mit den gleichen Einstellungen bauen willst, die Du über die Projekteigenschaften festgelegt hast. Dafür würde sich MSBuild anbieten. Wenn es Dir nicht wichtig ist die selben Einstellungen zu haben kannst Du die Library beim Compileraufruf angeben:

    cl your_code.cpp /link ws2_32.lib
    

    oder als #pragma-Anweisung in Deinen Code schreiben:

    #pragma comment(lib, "ws2_32.lib")
    


  • @Swordfish sagte in VS2017 dev. cmd erzeugt keine .exe:

    cl your_code.cpp /link ws2_32.lib

    Danke !!!!! Genau das war mein Problem ... Habe nur in den Projekt Settings meine ws_32.lib gelinked Habe nicht gewusst das man das explizit angeben muss.



  • @BlindRob Das Projekt ist für die IDE.
    Damit kannst du aber auch die.exe bauen.

    Die Warnungen aus Zeile 117 musst du auch noch beheben.



  • @DirkB Wo finde ich dort die .exe? Hab extra in Debug-Folder geschaut & da sind nur nervige .obj Datein & keine .exe ...



  • visual studio legt mehrere debug-ordner an. gib im explorer (im hauptverzeichnis) doch einfach mal *.exe ein


Anmelden zum Antworten