HP-SOCKET里面为什么会有 TryAcquireSRWLockShared 这种Win7上才有的函数

待定 发布于 2014/06/16 17:02
阅读 1K+
收藏 0


@伤神小怪兽 你好,想跟你请教个问题:我在我机器上用VS2008调用HP-SOCKET编译时错误,提示TryAcquireSRWLockShared 没有定义,我看了下MSDN,这个函数是WIN7以上才有的

请问为什么会使用这种函数呢,这样做出来的东西不是必须要WIN7以上才能运行么,求教,谢谢

加载中
0
伤神小怪兽
伤神小怪兽

引用来自“待定”的评论

引用来自“伤神小怪兽”的评论

不会的,我就是用 XP 系统的,注意以下代码:
#if _WIN32_WINNT >= _WIN32_WINNT_WS08
    typedef CSlimLock CSimpleRWLock;
#else
    typedef CSWMR CSimpleRWLock;
#endif

详细错误描述是什么?

我是在VS08编译,无论 _WIN32_WINNT >= _WIN32_WINNT_WS08 是否成立都要编译CSlimLock,

而VS08的SDK里没有 TryAcquireSRWLockShared,所以编译不过

应该是必须要VS2010以上才能编译

用同样方法,把 class CSlimLock 包着。

#if _WIN32_WINNT >= _WIN32_WINNT_WS08
class CSlimLock
{
...
}
#endif

0
伤神小怪兽
伤神小怪兽
不会的,我就是用 XP 系统的,注意以下代码:
#if _WIN32_WINNT >= _WIN32_WINNT_WS08
    typedef CSlimLock CSimpleRWLock;
#else
    typedef CSWMR CSimpleRWLock;
#endif

详细错误描述是什么?
0
待定
1>------ Build started: Project: ghserver, Configuration: Debug Win32 ------
1>Compiling...
1>ghserver.cpp
1>d:\cgh\code\fvck\ghserver\ghserver\common\src\rwlock.h(64) : error C2039: 'TryAcquireSRWLockShared' : is not a member of '`global namespace''
1>d:\cgh\code\fvck\ghserver\ghserver\common\src\rwlock.h(64) : error C3861: 'TryAcquireSRWLockShared': identifier not found
1>d:\cgh\code\fvck\ghserver\ghserver\common\src\rwlock.h(65) : error C2039: 'TryAcquireSRWLockExclusive' : is not a member of '`global namespace''
1>d:\cgh\code\fvck\ghserver\ghserver\common\src\rwlock.h(65) : error C3861: 'TryAcquireSRWLockExclusive': identifier not found
1>bufferpool.cpp
1>d:\cgh\code\fvck\ghserver\ghserver\common\src\rwlock.h(64) : error C2039: 'TryAcquireSRWLockShared' : is not a member of '`global namespace''
1>d:\cgh\code\fvck\ghserver\ghserver\common\src\rwlock.h(64) : error C3861: 'TryAcquireSRWLockShared': identifier not found
1>d:\cgh\code\fvck\ghserver\ghserver\common\src\rwlock.h(65) : error C2039: 'TryAcquireSRWLockExclusive' : is not a member of '`global namespace''
1>d:\cgh\code\fvck\ghserver\ghserver\common\src\rwlock.h(65) : error C3861: 'TryAcquireSRWLockExclusive': identifier not found
1>RWLock.cpp
1>d:\cgh\code\fvck\ghserver\ghserver\common\src\rwlock.h(64) : error C2039: 'TryAcquireSRWLockShared' : is not a member of '`global namespace''
1>d:\cgh\code\fvck\ghserver\ghserver\common\src\rwlock.h(64) : error C3861: 'TryAcquireSRWLockShared': identifier not found
1>d:\cgh\code\fvck\ghserver\ghserver\common\src\rwlock.h(65) : error C2039: 'TryAcquireSRWLockExclusive' : is not a member of '`global namespace''
1>d:\cgh\code\fvck\ghserver\ghserver\common\src\rwlock.h(65) : error C3861: 'TryAcquireSRWLockExclusive': identifier not found
1>TcpServer.cpp
1>d:\cgh\code\fvck\ghserver\ghserver\common\src\rwlock.h(64) : error C2039: 'TryAcquireSRWLockShared' : is not a member of '`global namespace''
1>d:\cgh\code\fvck\ghserver\ghserver\common\src\rwlock.h(64) : error C3861: 'TryAcquireSRWLockShared': identifier not found
1>d:\cgh\code\fvck\ghserver\ghserver\common\src\rwlock.h(65) : error C2039: 'TryAcquireSRWLockExclusive' : is not a member of '`global namespace''
1>d:\cgh\code\fvck\ghserver\ghserver\common\src\rwlock.h(65) : error C3861: 'TryAcquireSRWLockExclusive': identifier not found
1>SocketHelper.cpp
1>d:\cgh\code\fvck\ghserver\ghserver\common\src\rwlock.h(64) : error C2039: 'TryAcquireSRWLockShared' : is not a member of '`global namespace''
1>d:\cgh\code\fvck\ghserver\ghserver\common\src\rwlock.h(64) : error C3861: 'TryAcquireSRWLockShared': identifier not found
1>d:\cgh\code\fvck\ghserver\ghserver\common\src\rwlock.h(65) : error C2039: 'TryAcquireSRWLockExclusive' : is not a member of '`global namespace''
1>d:\cgh\code\fvck\ghserver\ghserver\common\src\rwlock.h(65) : error C3861: 'TryAcquireSRWLockExclusive': identifier not found
1>Generating Code...
1>Build log was saved at "file://d:\cgh\code\fvck\ghserver\ghserver\Debug\BuildLog.htm"
0
待定

引用来自“伤神小怪兽”的评论

不会的,我就是用 XP 系统的,注意以下代码:
#if _WIN32_WINNT >= _WIN32_WINNT_WS08
    typedef CSlimLock CSimpleRWLock;
#else
    typedef CSWMR CSimpleRWLock;
#endif

详细错误描述是什么?

我是在VS08编译,无论 _WIN32_WINNT >= _WIN32_WINNT_WS08 是否成立都要编译CSlimLock,

而VS08的SDK里没有 TryAcquireSRWLockShared,所以编译不过

应该是必须要VS2010以上才能编译

0
伤神小怪兽
伤神小怪兽

引用来自“待定”的评论

引用来自“伤神小怪兽”的评论

不会的,我就是用 XP 系统的,注意以下代码:
#if _WIN32_WINNT >= _WIN32_WINNT_WS08
    typedef CSlimLock CSimpleRWLock;
#else
    typedef CSWMR CSimpleRWLock;
#endif

详细错误描述是什么?

我是在VS08编译,无论 _WIN32_WINNT >= _WIN32_WINNT_WS08 是否成立都要编译CSlimLock,

而VS08的SDK里没有 TryAcquireSRWLockShared,所以编译不过

应该是必须要VS2010以上才能编译

引用来自“伤神小怪兽”的评论

用同样方法,把 class CSlimLock 包着。

#if _WIN32_WINNT >= _WIN32_WINNT_WS08
class CSlimLock
{
...
}
#endif

另外,推荐 HPSocket DLL 方式使用 HP-Socket
0
待定

引用来自“待定”的评论

引用来自“伤神小怪兽”的评论

不会的,我就是用 XP 系统的,注意以下代码:
#if _WIN32_WINNT >= _WIN32_WINNT_WS08
    typedef CSlimLock CSimpleRWLock;
#else
    typedef CSWMR CSimpleRWLock;
#endif

详细错误描述是什么?

我是在VS08编译,无论 _WIN32_WINNT >= _WIN32_WINNT_WS08 是否成立都要编译CSlimLock,

而VS08的SDK里没有 TryAcquireSRWLockShared,所以编译不过

应该是必须要VS2010以上才能编译

引用来自“伤神小怪兽”的评论

用同样方法,把 class CSlimLock 包着。

#if _WIN32_WINNT >= _WIN32_WINNT_WS08
class CSlimLock
{
...
}
#endif

引用来自“伤神小怪兽”的评论

另外,推荐 HPSocket DLL 方式使用 HP-Socket
感谢解答,包起来后解决了,我再看下DLL的调用方式
伤神小怪兽
伤神小怪兽
到这里点一下“收藏”和“已用”呗,哈~ http://www.oschina.net/p/hp-socket
0
machhhh
machhhh

vs2008  用最新的HP-socket 3.3.1 

提示

 error C2039: “TryAcquireSRWLockShared”: 不是“`global namespace'”的成员

返回顶部
顶部