Einstellungen von BCC 5.51 fürs Multithreading



  • Hat den niemand eine Idee? Ich habe auch schon gegoogelt und anderweitig gesucht, aber ich finde dazu nichts. Mir ist das sehr wichtig, also wäre ich forh wenn mir jemand helfen könnte...



  • Wie wär es damit, wenn du mal verrätst welche fehlermeldungen er ausgibt. Ansonsten schau mal in die Dokumentation deines Compilers.



  • Also in der Dokumentation steht nichts dazu...
    Die Fehlermeldung:

    Error E2109 main1.cpp 84: Not an allowed type in function __stdcall WndProc(HWND__ *,unsigned int,unsigned int,long)
    

    Dieser Fehler bezieht sich auf das:

    HANDLE hThread;
    DWORD dwThreadID;
    ...
    DWORD WINAPI ServerListenThread (LPVOID data)
    {
        ServerListen();
        return ((DWORD)data);
    }
    ...
    hThread[0] = CreateThread (NULL, 0, ServerListenThread, (LPVOID)0, 0, &dwThreadID); // --> Zeile 84
    WaitForMultipleObjects (0, hThread, TRUE, INFINITE);
    


  • HANDLE hThread;
    

    und

    hThread[0] =
    

    passen nicht zusammen

    für multithreading ist der Zusatz 'mt' zuständig



  • Könntest du mir sagen, was genau du damit meinst?



  • Nunja, "HANDLE hThread;" ist eine Variable, "hThread[0]" setzt ein Array-Deklaration voraus.
    Also entweder

    HANDLE hThread;
    hThread =
    

    oder

    HANDLE hThread[1];
    hThread[0] =
    

    macht Sinn.

    Das mit Multithreading bezieht sich auf die Bibliotheken statt "cw32.lib" muß die "cw32mt.lib" eingebunden werden. Ob noch eine "-mt" oder so für den Compiler nötig ist weiß ich jetzt nicht genau.

    EDIT: Auf der Festplatte Deines Vertrauens

    D:\Borland\Tcc55\Help\bcb5tool.hlp > Inhalt > Command-line Tools > The C++ compiler, BCC32.EXE > Using the command-line compiler > command-line options > -tWM / -WM >

    Generate a multi-threaded target

    (Command-line switch = -tWM)

    The compiler creates a multi-threaded .EXE or .DLL. (The command-line option -WM is supported for backward compatibility only; it has the same functionality as -tWM.)

    > This option is not needed if you include a module definition file in your compile and link commands which specifies the type of 32-bit application you intend to build.



  • Achso...ich probiere das mal, und sage euch dann die ergebnisse



  • Also ich habe das jetzt versucht, aber das klappt immernoch nicht:

    Error: Unresolved external '_main' referenced from D:\PROGRAMMIERUNG\C++\BCC 5.5.1\LIB\C0X32.OBJ
    

    Eingegeben habe ich das so:

    bcc32 -tWM main1.cpp
    

    Ich habe auch die Lib eingebunden, aber das funktioniert trotzdem noch nicht.



  • c0x32.obj ist die Startcodedatei für Konsolenanwendungen. Du mußt den Compiler dazu bringen, ein 32Bit-Windowsprogramm zu erstellen.

    bcc32 -tWM myprog.cpp // - (option) t (target) W (32Bit) M (multithread)
    

    Also vom filosofischen Standpunkt aus müßte es eigentlich funktionieren, weil Du ja als Ziel eine 32Bit-Windows-Multithreading-Anwendung haben willst.
    Trotzdem fehlt offensichtlich noch eine Option, die Lösung steht in bcb5tool.hlp. Wer suchet der findet... Klopft an, und euch wird aufgetan...



  • Eigentlich mache ich das durch -tW aber das klappt nicht...und entweder suche ich falsch oder ich finde wirklich nichts in der Hilfe...



  • Also habe vergessen zu schrieben: unter Linker ist das einzige Für-Mich-Sichtbare. Allerdings weiß ich nicht welches Objekt ich stattdessen einbinden muss, und google ist heute auch nicht gut drauf 😞



  • bcc32 -tW -tWM myprog.cpp
    

    Gibt es noch Fehlermeldungen?



  • Nein nur eben das oben genannte:

    Error: Unresolved external '_main' referenced from D:\PROGRAMMIERUNG\C++\BCC 5.5.1\LIB\C0X32.OBJ
    


  • OMFG! wie blind bin ich!? danke keksekekse! es funktioniert!!! ich habe das erste -tW nicht gesehen!!!! THX THX THX


Anmelden zum Antworten