2016-09-12 2 views
-1

Ich versuche, SRWLock mit C++ Projekt Visual Studio 2012 (Windows 7) nur auf 32-Bit-Windows und SRWLock ist besser als CriticalSections in meinem Fall. Wie ich gesucht habe, sollte ich WinBase.h einschließen und Std-Namespace verwenden. Aber SRWLock ist immer noch undefiniert. Konnte in Google nichts Nützliches finden. Was ich vermisse? Ich schätze alle Hinweise. Code:Warum ist SRWLock undefiniert?

#include <cstdlib> 
#include <winsock2.h> 
#include <Ws2tcpip.h> 
#include <windows.h> 
#include <stdio.h> 
#include <vector> 
#include <iostream> 
#include <string> 
#include <conio.h> 
#include <WinBase.h> 
using namespace std; 
SRWLock gLock; // here is the problem 
+0

Weiß nicht, welche Dokumentation Ihnen gesagt hat "winbase.h" hat dies. [Lesen Sie die ** echte ** Dokumentation] (https://msdn.microsoft.com/en-us/library/br244843.aspx). Wenn Sie diese C++ .NET-Klasse verwenden, finden Sie sie dort. Wenn Sie den Kern winapi verwenden, [diese Dokumentation ist hier] (https://msdn.microsoft.com/en-us/library/windows/desktop/aa904937 (v = vs.85) .aspx). Dem Aussehen nach zu urteilen, wollten Sie die ersteren verwenden, aber die Dateien für die letzteren einbeziehen. – WhozCraig

+0

WhozCraig, danke. Einer der Links wies auf eine Lösung hin. Sie können meine Antwort tatsächlich umformulieren und ich werde sie akzeptieren. – Archont

+0

Ich habe über WinBase.h in "Windows über C \ C++" Buch von Jeffrey Richter und Christophe Nasarre gefunden und es scheint wie wahr. – Archont

Antwort

1

Wo ein Tippfehler war: Sollte SRWLOCK statt SRWLock sein. Und Sie brauchen

#include <windows.h>