Программист
|
|||||||||||
1 | |||||||||||
Ошибки линковки LNK2005, LNK116904.04.2012, 18:19. Показов 11611. Ответов 20
Метки нет (Все метки)
Как-то пробовал сделать программу из нескольких модулей, но наткнувшись на какие-то непонятные ошибки забросил это дело...
Решив же намедни окончательно разобраться с этим вопросом, я опять столкнулся с непонятными ошибками линковки, поиск чётких ответов не дал. Что же тут не так? Файл Example.cpp:
0
|
04.04.2012, 18:19 | |
Ответы с готовыми решениями:
20
Как исправить ошибки LNK2005 и LNK1169 ? LNK2005+LNK1169 LNK2005 и LNK1169. Не знаю, как исправить Ошибка линковки файлов при компиляции: "fatal error LNK1169: обнаружен многократно определенный символ" |
04.04.2012, 18:24 | 2 | |||||
Инклудятся только заголовочные (header) файлы Хочешь где-нибудь зачем-нибудь написать стражи включения, создай Example.h и в него пихай Линкер сам найдёт твой экзампл.спп и свяжет с майном Нужно только указать для компилятора объявления функций
0
|
Программист
|
|
04.04.2012, 18:41 [ТС] | 3 |
Не помогло...
Насколько я помню расширение подключаемых файлов может быть хоть txt, тк препроцессор работает с текстовыми файлами, а какое им задать расширение это дело традиции... Добавлено через 10 минут Можно пример правильно оформленных файлов для успешной компиляции?
0
|
04.04.2012, 18:52 | 4 | |||||||||||||||
Пример ща напишу, а по поводу инклуда спп
Пойми подключать в одно целое cpp файлы это работа линкера и ты ему мешаешь её выполнять Хочешь подключить тхт? Вот и переименуй example.cpp в example.txt, извращенец А линкер их сам соберёт, слышал понятие "раздельная компиляция"? ща пример будет Добавлено через 4 минуты Файл Example.h
1
|
04.04.2012, 18:54 | 5 |
Линкер не умеет сам находить файлы, которые надо связать. Для этого существуют мэйкфайлы, конфигурации проектов и другие приблуды.
Вот именно. Вы слышали? Инклуд гуарды для слабаков?
0
|
04.04.2012, 18:58 | 6 |
Мне впадлу было.
Ясно. Теперь Скажи, зачем мэйкфайлы человеку пытающемуся создать первый проект из двух файлов спп в MSVS? Инклуд стражи он уже использовал не там где надо.
0
|
Программист
|
|
04.04.2012, 19:03 [ТС] | 7 |
Kuzia domovenok, работает, сейчас буду разбираться как)
fasked, пожалуйста, если можете дополнить, я буду весьма благодарен. Новые вопросы: Что за инклуд гуарды? Как же надо использовать "инклуд стражи"?
0
|
04.04.2012, 19:30 | 8 | ||||||||||
Сообщение было отмечено как решение
Решение
Whiteha, include guard это те самые
Так что лучше их использовать всегда. Директива #include просто подставляет содержимое файла. Так что сами представьте, что будет, если подставить содержимое одного файла дважды. Уж точно ничего хорошего Совершенно верно. Однако, следует помнить, что иные способы могут вызвать кучу недоразумений и непониманий. Собственно отсюда и пошли традиции - чтобы все друг друга понимали. То, что MSVS сама генерирует мэйкфайл или что-либо подобное не значит, что его нет или что этого человека можно обманывать, говоря о линкере как о всеумеющей тулзе. Это не так.
3
|
04.04.2012, 19:45 | 9 |
Человек спросил, как "собрать проект из двух файлов в MSVS"
Конкретный вопрос. Всё. Я ему вообще не хотел сначала писать весь этот код, говорить, что объявления функций нужно выносить в заголовочные файлы, и.т.д.и.т.п. Посмотри мой первый пост. Там даже про .h файл не упомянуто. Он не спрашивал про инклудгарды, мейк файлы, компиляцию и линковку из командной строки и прочие извращения. Даны функции, сказано построить в MSVS - я ответил. Лишняя информация только отвлекает.
0
|
60 / 60 / 7
Регистрация: 16.05.2010
Сообщений: 632
|
||||||
04.04.2012, 19:52 | 10 | |||||
то есть если в одном файле я определю код между
0
|
Программист
|
|||||||||||||||||||||
04.04.2012, 19:54 [ТС] | 11 | ||||||||||||||||||||
Сейчас имеется:
Интерфейс Example.h:
Файл с мейном:
1) Как Example.h подключает Example.cpp? И почему это работает, если Example.cpp вновь подключает Example.h(почему не получается бесконечная рекурсия и VS не посылает нас разбираться с ошибками)? 2) Почему при попытке вынести из Example.h
3) Как при данной организации файлов правильно организовать инклуд гуарды?
0
|
04.04.2012, 20:01 | 12 | |||||||||||||||
Товарищ говорил о случаях, когда ты в один cpp прямо или косвенно подключаешь два одинаковых h файла так
Вообще, я пишу их, когда линковщик выдаёт очередную страшную LNK ошибку. У тебя ж всего два файла! Как в них запутаешься?
0
|
Программист
|
||||||
04.04.2012, 20:10 [ТС] | 13 | |||||
Ок, значит если ставить защиту от множественного подключения, то тока в *.h, так:
Example.h
А как быть с 1 и 2 жизненными вопросами(Ошибки линковки LNK2005, LNK1169)?=\
0
|
04.04.2012, 20:13 | 14 |
В том то и фокус, что прописывая вызов функции, тебе для успешной компиляции достаточно иметь лишь её объявление int out_string1(string ); Вот такие объявления действительно напрямую пришиваются инклудами в спп файл, Т.е. достаточно знать, что такая функция есть, и какой у неё синтаксис при использовании. На место вызова ф-ии компилятор поставит переход, а адрес перехода потом определится А уже после компиляции проект соберётся в одно целое и
0
|
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
05.04.2012, 12:55 | 15 |
В краевом случае, когда все файлы содержат включение всех остальных, стражи включения придётся написать везде. Так почему бы их не писать сразу?
0
|
fasked
|
05.04.2012, 13:14
#16
|
2
|
kazak
|
05.04.2012, 13:28
#17
|
0
|
silent_1991
|
05.04.2012, 13:46
#18
|
Не по теме: kazak, так это уже не к faskedу :D
0
|
Программист
|
||||||||||||||||
05.04.2012, 23:07 [ТС] | 19 | |||||||||||||||
Стал пробовать с классами, вновь выскочили две ошибки, на этот раз LNK2001 и LNK1120, как сделать правильно?
Example.h
0
|
05.04.2012, 23:38 | 20 | |||||
В простой программе нафига это надо, если и так все видно и понятно, легко контролируется. Лень же.
Более того, в первом посте, я советовал вообще вместо h файла написать ВСЕГО 2 строчки объявлений 2х функций. Но нет, давайте, посоветуйте создать, как лучшие гуру программирования советуют.
0
|
05.04.2012, 23:38 | |
05.04.2012, 23:38 | |
Помогаю со студенческими работами здесь
20
ошибки линковки с++(... Ошибки линковки [MPI] Ошибки линковки Ошибки на стадии линковки Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |