Je suis en train de compiler un code source dans Cygwin (dans Windows 7) et obtenir l'erreur suivante lorsque je lance le fichier makefileproblèmes compiliing C++ code à l'aide Cygwin
g++ -DHAVE_CONFIG_H -I. -I.. -I.. -Wall -Wextra -Werror -g -O2 -MT libcommon_a Fcntl.o -MD -MP -MF .deps/libcommon_a-Fcntl.Tpo -c -o libcommon_a-Fcntl.o `test -f 'Fcntl.cpp' || echo './'`Fcntl.cpp
Fcntl.cpp: In function int setCloexec(int):
Fcntl.cpp:8: error: 'F_GETFD' was not declared in this scope
Fcntl.cpp:8: error: 'fcntl' was not declared in this scope
Fcntl.cpp:11: error: 'FD_CLOEXEC' was not declared in this scope
Fcntl.cpp:12: error: 'F_SETFD' was not declared in this scope
make[4]: *** [libcommon_a-Fcntl.o] Error 1
make[4]: Leaving directory `/abyss-1.1.2/Common'
make[3]: *** [all-recursive] Error 1
make[3]: Leaving directory `/abyss-1.1.2'
make[2]: *** [all] Error 2
make[2]: Leaving directory `/abyss-1.1.2'
make[1]: *** [.build-conf] Error 2
make[1]: Leaving directory `/cygdrive/c/Users/Martin/Documents/NetBeansProjects/abyss-1.1.2_1'
make: *** [.build-impl] Error 2
Le fichier problème est: -
#include "Fcntl.h"
#include <fcntl.h>
/* Set the FD_CLOEXEC flag of the specified file descriptor. */
int setCloexec(int fd)
{
int flags = fcntl(fd, F_GETFD, 0);
if (flags == -1)
return -1;
flags |= FD_CLOEXEC;
return fcntl(fd, F_SETFD, flags);
}
Je ne comprends pas ce qui se passe, le fichier fcntl.h est disponible et les varaiables qu'il dit n'a pas été déclaré dans ce champ ne donnent pas une erreur quand je compilez le fichier lui-même
Toute aide serait appréciée
Merci beaucoup
Peut-être à cause de la collision de noms, comme sur win 'fcntl.h' et' Fcntl.h' pointent vers les mêmes fichiers et (je ne pense pas que ce soit le cas, mais stil ...) vous pourriez être en fait en incluant le même fichier - vérifiez vos paramètres de répertoires inclus. –