无法使用GNU GCC在matlab(Windows)中编译C文件(MEX)

无法使用GNU GCC在matlab(Windows)中编译C文件(MEX),c,matlab,gcc,gnu,mex,C,Matlab,Gcc,Gnu,Mex,我正在尝试使用GNU GCC编译器在windows上编译本机linux c文件。出于安装目的,我遵循了Faheem在以下链接中提到的步骤: 这里给出的例子编译成功。但是,当我尝试使用线程函数编译文件时,会抛出以下错误: 致命错误:pthread.h:没有这样的文件或目录 #包括 ^ 编译已终止。 我已经安装了MinGW安装程序中与GNUC编译器相关的所有组件,但错误仍然存在。有人能提出解决这个问题的办法吗。提前感谢。根据,TDM-GCC包括一个针对Microsoft Windows系统的pt

我正在尝试使用GNU GCC编译器在windows上编译本机linux c文件。出于安装目的,我遵循了Faheem在以下链接中提到的步骤:

这里给出的例子编译成功。但是,当我尝试使用线程函数编译文件时,会抛出以下错误:

致命错误:pthread.h:没有这样的文件或目录 #包括 ^ 编译已终止。

我已经安装了MinGW安装程序中与GNUC编译器相关的所有组件,但错误仍然存在。有人能提出解决这个问题的办法吗。提前感谢。

根据,TDM-GCC包括一个针对Microsoft Windows系统的pthreads仿真层,称为“winpthreads”,以及一个最新的工具链,您应该在TDM安装路径中拥有
x86_64-w64-mingw32\include\pthread.h
。所以,我不知道Faheem的指令出了什么问题,但是如果MATLAB配置正确,包含pthread.h应该不会有问题

TDM怪癖页面上没有说明的是TDM使用来自MinGW-w64项目的Winpthreads。从当前随TDM安装的自述文件:

“Winpthreads”是MinGW-w64项目分发的库之一,并且 它允许GCC与pthreads完全兼容,这是 在中启用std::thread和其他线程相关函数所必需的 C++运行时.< /P> 如前所述,Pthreads是MinGW-w64项目的一部分,如果选择启用Pthreads的工具链,也可以使用MinGW-w64获得它。对于MinGW-w64,我执行以下操作来设置它():

  • 抓取(或用于选择所需的工具链,选择pthread版本)
  • 提取它,这样您就有了到编译器的路径,比如
    C:\mingw-w64\x86\u 64-4.9.2-release-posix-seh-rt\u v3-rev1\bin\x86\u 64-w64-mingw32-g++.exe
    如果您计划使用
    mex
    在MATLAB中编译,则不需要MSYS、cygwin或任何其他环境
  • 使用自定义的mexopts.bat或使用新的xml配置系统进行设置。在我的GITHUB RePO中,我在两种文件类型中都有明文W64的C++配置。例如,使用XML文件来建立C++ MeX文件编译:

    mex -setup:C:\Users\Jon\Documents\MATLAB\mex_C++_mingw-w64.xml C++
    
    如果需要,可以通过修改配置文件以类似的方式设置C编译器


  • 我在中发布了上述说明的更详细版本。

    pthread.h
    是一个POSIX线程库,当您使用Windows时,在您的系统上找不到该库。您需要在此处找到它们:。同时检查:您是否检查了存在性[如果不存在,则复制]
    pthread.h
    MinGW/include
    或类似路径?谢谢您的快速回复。是的,苏拉夫先生,我试过这么做。但是它要求更多的头文件和更多缺少的函数。这是永无止境的谢谢Rayryeng先生我会试试的。