【问题标题】:Use pthreads in MinGW in Win7在 Win7 的 MinGW 中使用 pthread
【发布时间】:2015-01-20 02:11:50
【问题描述】:

2015-1-20,我在 Win7 中使用 MinGW,尝试使用 MinGW 和 Pthreads 编译我的源代码。 MinGW 已经支持 POSIX 线程,在“MinGW 安装管理器”中,我们可以安装 pthreads dev 包和 pthreads lib。 但是我自己编译源码的时候,出现了一个错误:struct timespec redefinition,先在pthread.h,然后在unistd.h,不知道为什么。

在此之前,实际上我安装了没有 pthreads dev 和 lib 包的 minGW,我下载了 pthreads-for-win32 源代码并在本地构建它。我使用 -I/somewhere -L/somewhere -lpthreadGC2 链接到我的源代码,并且它有效。

但这一次,MinGW 的自封装失败了。我需要帮助。 我无法上传图片向您展示详细信息....

【问题讨论】:

    标签: pthreads mingw


    【解决方案1】:

    其实我找到了解决办法。

    不要在“pthread.h”之后包含“unistd.h”,而是使用本地winapi。

    在 Linux 中使用 gcc 编写“pthreads”很容易,但在 Win7 中不支持,请使用“MinGW 安装管理器”(谷歌“mingw”并下载)进行安装。 安装mingw时选择“MinGW标准库”中的“mingw32-pthreads-win32”开发包,则无需下载pthreads-for-win32源代码或在本地构建。但是“pthread.h”会和“unistd.h”冲突,在Windows中,我们应该使用Windows API而不是unix API。

    【讨论】:

    • 在编译调用 C 代码的 python 脚本时遇到类似问题:$ python setup.py install make: Entering directory /c/vw-master/vw-c' gcc vw.c -o ../bin/vw -lm -pthread -O3 -Wall -march=native -funroll- loops -Wno-unused-result vw.c:19:21: fatal error: pthread.h: No such file or directory compilation terminated. make: *** [vw] Error 1 make: Leaving directory /c/vw-master/vw-c' 你对 PATH 做了任何更改吗还是别的什么?
    • “我们应该使用 Windows API 而不是 unix API”是什么意思,你能举个例子吗...?
    • 感谢您的回答,我最终解决了这个问题。
    • 这个包现在叫做“mingw-w64-winpthreads-git”:packages.msys2.org/package/mingw-w64-x86_64-winpthreads-git
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-04
    • 1970-01-01
    • 2013-07-07
    • 1970-01-01
    • 1970-01-01
    • 2015-08-13
    • 2012-12-14
    相关资源
    最近更新 更多