c++ - 无法在 kernel32.dll 中找到过程入口点 InitializeConditionVariable

标签 c++ winapi multithreading

我正在运行生产者消费者问题(使用 windows 线程)。它编译成功但在运行时显示以下错误

无法在动态库 Kernel32.dll 中找到过程入口点 InitializeConditionVariable。

你能说出是什么原因吗

最佳答案

这是一个仅在 Vista 及更高版本中可用的 API 函数。我猜你是在 XP 上运行这段代码。

为避免意外使用仅在更高版本的 Windows 中可用的 API 函数,您需要定义 _WIN32_WINNT 宏:

#define _WIN32_WINNT 0x502   // Designed to run on Windows XP SP2 and up
#include <windows.h>

如果您不设置它,那么在更高版本的 Windows SDK 上它通常默认为 0x600,并选择 Vista 作为目标操作系统。顺便说一句,您可能不得不放弃条件变量。您的问题中没有足够的细节来提供合适的替代品。使用互斥锁的代码应该不难找到。

关于c++ - 无法在 kernel32.dll 中找到过程入口点 InitializeConditionVariable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2847960/

相关文章:

c++ - C++嵌套类是正确的封装方法吗?

c++ - 如何在gdb中打印指针列表的内容?

c++ - 使用 `emplace_back`而不是 `push_back`时没有缩小警告

c - 使用 Mutex 锁定和同步

c++ - WinApi - ToUnicode 函数引发访问冲突?

Android:来自 WebView 的 shouldOverrideUrlLoading 的 CalledFromWrongThreadException

java - 如何对需要时间执行操作的线程进行单元测试

c++ - OpenMP 指定 for 循环迭代的线程数

c# - 线程数组c#

c++ - 将 VS 2008 Win32 DLL 剥离到一个文件