вроде бы все прозрачно, но при компиляции вылетает еррор:
g++ -Wall -o "test" "test.cpp" (in directory: /home/vasya/projects/test)
/var/tmp//ccN0sL9q.o(.text+0x18): In function `main':
: undefined reference to `CTest::foo() const'
Compilation failed.
не пойму, почему компилер не видит реализацию метода CTest::foo вынесенную в cpp файл??
Здравствуйте, Аноним, Вы писали:
А>g++ -Wall -o "test" "test.cpp" (in directory: /home/vasya/projects/test) А>/var/tmp//ccN0sL9q.o(.text+0x18): In function `main': А>: undefined reference to `CTest::foo() const' А>Compilation failed. А> А>не пойму, почему компилер не видит реализацию метода CTest::foo вынесенную в cpp файл??
Потому что этот файл (CTest.cpp) не используется при компиляции.
Re[2]: компилер не видит метод класса
От:
Аноним
Дата:
07.06.08 19:37
Оценка:
Здравствуйте, Pretender, Вы писали: P>Потому что этот файл (CTest.cpp) не используется при компиляции.
верно! блин, я с этими IDE с ума сойду скоро. непонятно, каким макаром тому же Geany указать чтобы он подхватил все мои сорцы.
Re[3]: компилер не видит метод класса
От:
Аноним
Дата:
07.06.08 19:49
Оценка:
стоп.
а ежели реализацию метода поместить в саму декларацию класса, то все собирается. вот почему так?
Здравствуйте, Аноним, Вы писали:
А>стоп. А>а ежели реализацию метода поместить в саму декларацию класса, то все собирается. вот почему так?
Потому что через `#include` реализация попадает в `test.cpp`
Re[5]: компилер не видит метод класса
От:
Аноним
Дата:
07.06.08 19:59
Оценка:
Здравствуйте, Daevaorn, Вы писали:
D>Здравствуйте, Аноним, Вы писали:
А>>стоп. А>>а ежели реализацию метода поместить в саму декларацию класса, то все собирается. вот почему так?
D>Потому что через `#include` реализация попадает в `test.cpp`
а почему тогда через этот инклюд сам CTest.cpp не цепляется?
в test.cpp у меня ведь четко прописано #include "CTest.h". это разве не означает что и "CTest.cpp" должен подхватываться? простите за ламерские вопросы, но недопонимаю я этот момент.
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, Daevaorn, Вы писали:
D>>Здравствуйте, Аноним, Вы писали:
А>>>стоп. А>>>а ежели реализацию метода поместить в саму декларацию класса, то все собирается. вот почему так?
D>>Потому что через `#include` реализация попадает в `test.cpp`
А>а почему тогда через этот инклюд сам CTest.cpp не цепляется? А>в test.cpp у меня ведь четко прописано #include "CTest.h". это разве не означает что и "CTest.cpp" должен подхватываться? простите за ламерские вопросы, но недопонимаю я этот момент.
Нет, не должен. Вы должны явно указывать при компиляции все файлы реализаций.
Re[7]: компилер не видит метод класса
От:
Аноним
Дата:
07.06.08 20:09
Оценка:
теперь понятно. благодарю.
но неясно почему эта IDE сама не делает за меня все эти действия%)
Здравствуйте, Аноним, Вы писали:
А>теперь понятно. благодарю. А>но неясно почему эта IDE сама не делает за меня все эти действия%)
Откуда она знает, что ты хочешь включить в проект?
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[9]: компилер не видит метод класса
От:
Аноним
Дата:
08.06.08 11:56
Оценка:
Здравствуйте, LaptevVV, Вы писали:
LVV>Здравствуйте, Аноним, Вы писали:
А>>теперь понятно. благодарю. А>>но неясно почему эта IDE сама не делает за меня все эти действия%) LVV>Откуда она знает, что ты хочешь включить в проект?
ибо, изначально, я создал в ней 'new project', затем создал все эти сорцы, прям в этом проекте. по логике, выходит, что все эти файлы предполагается что IDE должна распознавать как файлы принадлежащие моему проекту --> подхватывать их при линковке и компиляции. ну может, в Geany на этот счет свой взгляд. если так, то мне непонятно, ибо это неудобно ужасно.
А>ибо, изначально, я создал в ней 'new project', затем создал все эти сорцы, прям в этом проекте.
Да, должна. В этом, собственно, основное предназначение IDE . Будет очень странно, если ваша этого не умеет, так что я советую повнимательнее посмотреть на всякие меню и команды.
Да здравствует мыло душистое и веревка пушистая.
Re[11]: компилер не видит метод класса
От:
Аноним
Дата:
09.06.08 15:20
Оценка:
Здравствуйте, Vamp, Вы писали:
А>>ибо, изначально, я создал в ней 'new project', затем создал все эти сорцы, прям в этом проекте.
V>Да, должна. В этом, собственно, основное предназначение IDE . Будет очень странно, если ваша этого не умеет, так что я советую повнимательнее посмотреть на всякие меню и команды.
в менюхе "Build" есть "Set includes and arguments". в ней следующее:
C source file commands:
Compile: __
Build: __
Execute: __