Visual Studio 2017, Erstellen von #include Arbeit?

Lesezeit: 3 Minuten

Benutzer-Avatar
Taschen

Ich habe das Gefühl, dass ich heute stundenlang gesucht habe, wie man macht #include <pthread.h> arbeite in Visual Studio 2017 unter Windows 10 und habe keine Antwort gefunden, die funktioniert hat. Kann mir bitte jemand sagen, wie ich das zum Laufen bekomme?

Der Fehler, den ich erhalte, ist: Quelldatei “pthread.h” kann nicht geöffnet werden

  • libpthread ist typischerweise für *nix. Haben Sie eine Windows-Version gefunden?

    – chao

    20. Februar 2018 um 21:12 Uhr


  • pthread ist für Linux-POSIX-Threads und wird nicht mit Visual Studio gebündelt. Wenn Sie Threads unter Windows erstellen möchten, suchen Sie nach msdn.microsoft.com/en-us/library/windows/desktop/… oder verwenden Sie OpenMP

    – Salem

    20. Februar 2018 um 21:14 Uhr

  • Wenn Sie dieses Problem umgehen möchten, sollten Sie in der Lage sein, eine Linux-VM zu verwenden.

    Benutzer3340067

    20. Februar 2018 um 23:43 Uhr

Benutzer-Avatar
Bala Ganesh

In Visual Studio 2017

  1. Projekt -> Nuget-Pakete verwalten

  2. Suchen Sie in der Registerkarte “Durchsuchen” nach “pthread”.

  3. Wählen Sie Installieren[Search Results in Nuget packages]

Geben Sie hier die Bildbeschreibung ein

  • Dies ist der schnellste Weg

    – Anatoly Strashkevich

    2. Februar 2019 um 8:29 Uhr

  • Ich erhalte einen Fehler “1>c:\users\timo\source\repos\consoleapplication1\packages\pthreads.2.9.1.4\build\native\include\pthread.h(320): error C2011: ‘timespec’: ‘struct ‘ type redefinition 1>c:\program files (x86)\windows kits\10\include\10.0.17763.0\ucrt\time.h(39): Hinweis: siehe Deklaration von ‘timespec'”

    – TraceKira

    30. März 2019 um 10:38 Uhr

  • @TraceKira Ich habe den gleichen Fehler bekommen. Es scheint einen Fehler in pthread.h zu geben. Wenn Sie dort einen Kommentar zu dieser Angabe machen, ist alles wieder in Ordnung.

    – David Gausmann

    20. April 2020 um 16:44 Uhr

  • @TraceKira in der Datei pthread.h, entfernen Sie die Zeilen zwischen 318-324. Es wird das Neudefinitionsproblem lösen

    – Mustafa Demir

    28. Dezember 2021 um 18:33 Uhr

Für Visual Studio 2017 habe ich über NuGet-Pakete installiert.

Versuchen Sie die folgenden Schritte,

  1. Gehen Sie zu Projekt > „NuGet-Pakete verwalten“.
  2. Durchsuchen > nach „pthread“ suchen > installieren

Windows unterstützt pthreads nicht nativ.

Es gibt eine Implementierung von pthreads für Windows Du könntest benutzen. Wenn Sie nur versuchen, so schnell wie möglich Code unter Windows zum Laufen zu bringen, ist dies möglicherweise die beste Wahl.

Wenn Sie den Code ändern können, sollten Sie sich ansehen, welche pthread-Funktionen Sie tatsächlich verwenden. Wenn Sie nur einen Mutex benötigen, sind ein paar #ifdefs um pthreads/winapi möglicherweise ein besserer Weg.

Es gibt auch einige Projekte, die Kompatibilitätsebenen implementieren, die nicht so ausdrucksstark sind wie die vollständige pthreads-API, aber für die meisten Projekte mehr als ausreichend sind. TinyCThread ist eine Option (die ich behalte, also nehmen Sie die Empfehlung mit einem Körnchen Salz), die die C11-Thread-API implementiert.

Weitere Optionen sind:

OpenMP könnte auch eine gute Wahl sein. Es ist wirklich einfach zu bedienen, arbeitet aber auf einem höheren Niveau und erfordert daher möglicherweise eine umfangreichere Umschreibung.

  • Vielleicht bin ich nur dumm, aber ich kann scheinbar nichts von sourceware.org/pub/pthreads-win32 herunterladen. Ich kann auf alles klicken, aber nicht in der Lage, die Zips herunterzuladen.

    – Jbags

    20. Februar 2018 um 21:42 Uhr


  • sourceware.org/pub/pthreads-win32/… funktioniert bei mir.

    – nemequ

    20. Februar 2018 um 22:21 Uhr

Wenn Sie haben vcpkg installiert, dann können Sie einfach tun:

vcpkg.exe install pthread

Das wird einen Code von herunterladen https://sourceforge.net/projects/pthreads4w, kompilieren Sie es und installieren Sie es in Ihrem System. Wenn vcpkg korrekt auf Ihrem Computer eingerichtet ist, sollte Visual Studio diese Dateien automatisch verwenden.

1283800cookie-checkVisual Studio 2017, Erstellen von #include Arbeit?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy