#error You must link against multi-threaded libraries



  • Guten Morgen!

    Die Frage ist, wie ich das hinbekomme.
    Ich arbeite unter Windows mit dem Visual Slick Edit und möchte ein Programm compilieren, welches ACE nutzt. Die ACE-Quellen erzeugen dabei immer die Meldung

    #error You must link against multi-threaded libraries when using ACE (check your project settings)

    Nur wo mache ich das? Beim Visual Studio gabs immer ein schönes Dropdownfeld mit Auswahlmöglichkeiten, beim Slick Edit gibts sowas nicht. Ich nehme an das ist irgendein Compiler/Linker-Flag vom g++, nur welches?

    Google brachte nicht den gewünschten Erfolg, danke für eure Hilfe 😋

    PS: Ja, ist vielleicht nicht zu 100% das richtige Forum, aber verkehrt ist es hier auch nicht 😉



  • Kannst du nicht irgendwo die Kommandozeilenoptionen angeben?, mit denen cl.exe aufgerufen wird?

    ist /MD für multithreaded DLL und /MDd für multithreaded debug DLL, /MT bzw. /MTd für static linking.

    In beiden fällen sollte _MT automatisch definiert sein (was ACE wahrscheinlich prüft)



  • Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum Compiler-Forum verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • peterchen schrieb:

    Kannst du nicht irgendwo die Kommandozeilenoptionen angeben?, mit denen cl.exe aufgerufen wird?

    ist /MD für multithreaded DLL und /MDd für multithreaded debug DLL, /MT bzw. /MTd für static linking.

    In beiden fällen sollte _MT automatisch definiert sein (was ACE wahrscheinlich prüft)

    Ja, ich wusste nur nicht welche Option es ist. Es ist

    -D_MT 🙂



  • Delryn schrieb:

    Es ist -D_MT 🙂

    Äh, damit hast du vermutlich nur die Prüfung ausgetrickst, nicht wirklich auf multithreaded umgestellt.



  • Delryn schrieb:

    Ja, ich wusste nur nicht welche Option es ist. Es ist

    -D_MT 🙂

    Das ist nicht gut. Das Definieren solcher Makros solltest du schon dem Compiler überlassen.
    Wenn ich mal MSDN zitieren darf:

    _MT Defined when /MD or /MDd (Multithreaded DLL) or /MT or /MTd (Multithreaded) is specified.

    Entsprechende Einstellungen sollten in den Projektoptionen zu finden sein.



  • In den Projektoptionen finde ich ja eben nichts?

    Was genau soll ich denn jetzt tun 🤡



  • MFK schrieb:

    Delryn schrieb:

    Es ist -D_MT 🙂

    Äh, damit hast du vermutlich nur die Prüfung ausgetrickst, nicht wirklich auf multithreaded umgestellt.

    Wie bring ich den g++ unter Windows dazu, Multithreaded zu compilieren?

    Ich google seit stunden und alles was ich finde klappt nicht:

    -enable-threads // kennt er, aber ACE gibt sich damit nicht zufrieden
    oder -pthread, kennt er nicht, /MD sowieso nicht.

    Ich hab da einen echt hartnäckigen ACE Fehler beim Threading und ich glaube der rührt daher das ich wirklich nur das define gesetzt hatte, aber nicht multithreaded compiliert wurde. Wie geht das mit dem g++?


Anmelden zum Antworten