GoogleTest 1.6 mit Cygwin 1.7 - Kompilierungsfehler: 'fileno' wurde in diesem Bereich nicht deklariert

GoogleTest 1.6 mit Cygwin 1.7: 'fileno' wurde in diesem Bereich nicht deklariert

Fehlermeldung beim Erstellen eines einfachen Tests für die Factorial () - Funktion in Eclipse CDT:

Invoking: Cygwin C++ Compiler
g++ -std=c++0x -DGTEST_OS_CYGWIN=1 -I"E:\source\gtest-1.6.0\include" -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"src/challenge.d" -MT"src/challenge.d" -o "src/challenge.o" "../src/challenge.cpp"
In file included from E:\source\gtest-1.6.0\include/gtest/internal/gtest-internal.h:40:0,
                 from E:\source\gtest-1.6.0\include/gtest/gtest.h:57,
                 from ../src/challenge.cpp:11:
E:\source\gtest-1.6.0\include/gtest/internal/gtest-port.h: In function 'int testing::internal::posix::FileNo(FILE*)':
E:\source\gtest-1.6.0\include/gtest/internal/gtest-port.h:1589:51: error: 'fileno' was not declared in this scope
E:\source\gtest-1.6.0\include/gtest/internal/gtest-port.h:1595:57: error: 'strdup' was not declared in this scope
E:\source\gtest-1.6.0\include/gtest/internal/gtest-port.h:1627:71: error: 'fdopen' was not declared in this scope

Eclipse CDT 8.1 mit gcc 4.7.3 unter Cygwin 1.7.22

gTest 1.6 wurde erfolgreich mit Demo-Tests erstellt, mit cmake 2.8.9 auf Cygwin 1.7.22

Ich habe die erstellte Bibliothek mit dem vollständigen Pfad E: \ lib \ gtest-1.6.0 \ Cygwin \ libgtest.a verknüpft

Die folgende Befehlsoption wurde manuell hinzugefügt, ohne sie wurde derselbe Fehler gemeldet.

-DGTEST_OS_CYGWIN=1

Anscheinend haben die Fehler nichts mit meinem Code zu tun. Verwendet jemand gTest mit Eclipse und Cygwin?

Vielen Dank,

unsigned long Factorial(unsigned n) {
    return n==0? 0 : n*Factorial(n-1);
}

// Tests factorial of 0.
TEST(FactorialTest, HandlesZeroInput) {
  EXPECT_EQ(1, Factorial(0));
}

// Tests factorial of positive numbers.
TEST(FactorialTest, HandlesPositiveInput) {
  EXPECT_EQ(1, Factorial(1));
  EXPECT_EQ(2, Factorial(2));
  EXPECT_EQ(6, Factorial(3));
  EXPECT_EQ(40320, Factorial(8));
}

Antworten auf die Frage(2)

Ihre Antwort auf die Frage