Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Не компилируется тестовый проект
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток. Изучаю C++. В MS Visual Studio 2012 создал пустой C++ проект. В группу "Source Files" добавил два файла: Файл Book.cpp : Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. Файл main.cpp : Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Однако скомпилировать код не удаётся: Текст ошибокError 5 error LNK2005: "public: __thiscall ab::Book::Book(char *,char *)" (??0Book@ab@@QAE@PAD0@Z) already defined in Book.obj C:\Users\bushm_000\Documents\Visual Studio 2012\Projects\@Projects\Current Projects\CppClasses\main.obj CppClasses Error 6 error LNK2005: "public: __thiscall ab::Book::~Book(void)" (??1Book@ab@@QAE@XZ) already defined in Book.obj C:\Users\bushm_000\Documents\Visual Studio 2012\Projects\@Projects\Current Projects\CppClasses\main.obj CppClasses Error 7 error LNK2005: "public: static int __cdecl ab::Book::GetBooksCount(void)" (?GetBooksCount@Book@ab@@SAHXZ) already defined in Book.obj C:\Users\bushm_000\Documents\Visual Studio 2012\Projects\@Projects\Current Projects\CppClasses\main.obj CppClasses Error 8 error LNK2005: "private: static int ab::Book::booksCount" (?booksCount@Book@ab@@0HA) already defined in Book.obj C:\Users\bushm_000\Documents\Visual Studio 2012\Projects\@Projects\Current Projects\CppClasses\main.obj CppClasses Error 9 error LNK1169: one or more multiply defined symbols found C:\Users\bushm_000\Documents\Visual Studio 2012\Projects\@Projects\Current Projects\CppClasses\Debug\CppClasses.exe CppClasses Если я класс Book перепишу, сделав все функции подставляемыми (inline), то количество ошибок значительно уменьшается: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. Текст ошибокError 5 error LNK2005: "private: static int ab::Book::booksCount" (?booksCount@Book@ab@@0HA) already defined in Book.obj C:\Users\bushm_000\Documents\Visual Studio 2012\Projects\@Projects\Current Projects\CppClasses\main.obj CppClasses Error 6 error LNK1169: one or more multiply defined symbols found C:\Users\bushm_000\Documents\Visual Studio 2012\Projects\@Projects\Current Projects\CppClasses\Debug\CppClasses.exe 1 1 CppClasses Но Book::booksCount - это статическая переменная... Хочешь-не хочешь, а определять её вне класса придётся. Если я закомментирую определение, то вылезают др. ошибки: Текст ошибокError 5 error LNK2001: unresolved external symbol "private: static int ab::Book::booksCount" (?booksCount@Book@ab@@0HA) C:\Users\bushm_000\Documents\Visual Studio 2012\Projects\@Projects\Current Projects\CppClasses\main.obj CppClasses Error 6 error LNK1120: 1 unresolved externals C:\Users\bushm_000\Documents\Visual Studio 2012\Projects\@Projects\Current Projects\CppClasses\Debug\CppClasses.exe 1 1 CppClasses В чём проблема? Почему мне приходится переписывать функции как inline? Как этого избежать, если мне это не надо? И почему так и остаётся проблема со статическим полем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2013, 20:50 |
|
||
|
Не компилируется тестовый проект
|
|||
|---|---|---|---|
|
#18+
Compositum#include"Book.cpp" Где тебя научили так делать? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2013, 21:01 |
|
||
|
Не компилируется тестовый проект
|
|||
|---|---|---|---|
|
#18+
Переименуй Book.cpp в Book.h ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2013, 21:09 |
|
||
|
Не компилируется тестовый проект
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovCompositum#include"Book.cpp" Где тебя научили так делать? В каком-то примере видел и взял на заметку. ПереименуйПереименуй Book.cpp в Book.h Я это сделал первым же делом, но не помогло, потому вернул обратно на cpp. Ок, я переименовал расширение на h и подправил include, но это не решило проблем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2013, 21:29 |
|
||
|
Не компилируется тестовый проект
|
|||
|---|---|---|---|
|
#18+
Может это поможет - выкладываю упакованный архив с "проектом" здесь . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2013, 21:37 |
|
||
|
Не компилируется тестовый проект
|
|||
|---|---|---|---|
|
#18+
CompositumОк, я переименовал расширение на h и подправил include, но это не решило проблем. Потому что ты не удалил вторую копию этого файла из проекта. Прочитай внимательно тексты ошибок. Они запутаны, но однозначны. И в них точно названы имена файлов где расположены дублирующиеся процедуры. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2013, 21:39 |
|
||
|
Не компилируется тестовый проект
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovCompositumОк, я переименовал расширение на h и подправил include, но это не решило проблем. Потому что ты не удалил вторую копию этого файла из проекта. Прочитай внимательно тексты ошибок. Они запутаны, но однозначны. И в них точно названы имена файлов где расположены дублирующиеся процедуры. Вторую копию чего? Вот содержимое каталога проекта: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2013, 21:44 |
|
||
|
Не компилируется тестовый проект
|
|||
|---|---|---|---|
|
#18+
CompositumВторую копию чего? Файла book.h. У тебя их два: один включается в main.cpp, второй компилируется сам по себе. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2013, 22:01 |
|
||
|
Не компилируется тестовый проект
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovФайла book.h. У тебя их два: один включается в main.cpp, второй компилируется сам по себе. Понял, спасибо... Я думал, что смены расширения с cpp на h и перетаскивание мышкой файла в группу Header Files будет достаточно - оказалось что нет... Сейчас сделал следующее: для файла Book.h свойству Included In Project поставил значение False - файл сразу исчез из проекта. Затем из контекстного меню добавил этот файл снова через Add Existing Item... После этого компиляция прошла успешно. Теперь всё заработало. Ещё раз спасибо!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2013, 22:10 |
|
||
|
|

start [/forum/topic.php?fid=57&fpage=86&tid=2020537]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
39ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
2ms |
| others: | 53ms |
| total: | 195ms |

| 0 / 0 |
