Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.63
Aliru777
1 / 1 / 0
Регистрация: 03.11.2011
Сообщений: 71
#1

Раздельная компиляция ошибка LNK2019 - C++

14.08.2012, 15:54. Просмотров 1997. Ответов 45
Метки нет (Все метки)

Создал Header file
C++
1
2
3
4
5
6
7
8
9
10
11
#ifndef prata_9_1_H_
#define prata_9_1_H_
struct XY
{
int i_x; // distance from origin
int i_y; // direction from origin
};
 
void show_XY(XY);
 
#endif
основной файл с main
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include "stdafx.h"
#include "iostream"
#include <string>
#include <conio.h>
#include <ctype.h>
#include "prata _9_1_ex.h"
 
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    XY xy_1;
    while (cin>>xy_1.i_x>>xy_1.i_y)
    {
        show_XY(xy_1);
        cout<<"Enter next 2 values or Q for quit\n";
    }
    getch();
    return 0;
}
и файл с описанием функции
C++
1
2
3
4
5
6
7
8
9
10
#include "stdafx.h"
#include "iostream"
#include "prata _9_1_ex.h"
 
using namespace std;
 
void show_XY(xy)
{
    cout<<xy.i_x<<"\t"<<xy.i_y<<"\n";
}
Пишет:
Error 1 error LNK2019: unresolved external symbol "void __cdecl show_XY(struct XY)" (?show_XY@@YAXUXY@@@Z) referenced in function _wmain prata 9 include.obj
Error 2 fatal error LNK1120: 1 unresolved externals C:\Users\Наталья\Documents\Visual Studio 2005\Projects\prata 9 include\Debug\prata 9 include.exe

Не пойму в чем проблема.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.08.2012, 15:54
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Раздельная компиляция ошибка LNK2019 (C++):

Раздельная компиляция - C++
Здравствуйте, я перечитал на форуме информацию по этой теме, но пока что не сумел разобраться. У меня в проекте такие файлы: ...

Раздельная компиляция - C++
В Гугле не забанен,нашел описание самого принципа,но конкретных примеров не нашел. Вопросы вот какие: 1) Если у меня есть класс,...

раздельная компиляция - C++
Вот есть три файла: заголовочный файл с классом (.h), файл с реализацией методов класса (.cpp), и функцию main. Как, корректно, выполнить...

Раздельная компиляция - C++
Пусть есть программа, которая состоит из 2 файлов. 1 файл: основной, там где main 2 файл: содержит некоторые функции Также есть...

Раздельная компиляция файлов - C++
Если класс определен в раздельных файлах и изменения сделаны в части main программы, кот использует класс - какой файл необходимо...

Раздельная компиляция и шаблоны - C++
Есть 3 файла с кодом: 1) foo.hpp template&lt;typename T&gt; class foo { public: T bar; foo(); ~foo(); };

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
DU
1483 / 1059 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
14.08.2012, 20:39 #16
в h файлах писать using namespace std (и любые другие неймспейсы ) вредно. при включении такого файла в другие инклуды, туда также проникает этот юзинг, а это может привести к конфликту имен.
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
14.08.2012, 20:46 #17
Цитата Сообщение от DU Посмотреть сообщение
в h файлах писать using namespace std (и любые другие неймспейсы ) вредно. при включении такого файла в другие инклуды, туда также проникает этот юзинг, а это может привести к конфликту имен.
Солидарен.
Без него не пашет.
В mingv и MSVC 2010 всё замечательно пашет, а с ним - множественное определение.
Миниатюры
Раздельная компиляция ошибка LNK2019   Раздельная компиляция ошибка LNK2019  
Aliru777
1 / 1 / 0
Регистрация: 03.11.2011
Сообщений: 71
14.08.2012, 22:50  [ТС] #18
Cпасибо всем кто ответил - сейчас опять буду стараться понять.
Но...
Я так понимаю моя проблема в том,что я прочитал:
С.Прата 5 и 6(2011)
Дейтела
Лафоре
Шилдта
Инет и похожие темы на киберфоруме
...но везде тема описана вкратце - то есть - зачем это нужно - описано везде - и хорошо понятно, что это полезная вещь
Но как это сделать пошагово не описано
Есть как оказалось хедер файл - кто такой мэйн cpp?это просто там где функция мэйн?
Как соединять эти файлы м\у собой - я так и не понял.
Как пошагово это делать я вообще не понял
Мои действия:
1.создал хэдэр
2.создал файл описание функции скажем 1.0
3.создал мэйн 1.0.1
4.так как я не понял что не работает, я внес хэдэр в папки с 1.0 и 1.0.1
потом появилась ошибка о которой я писал - тепепь буду разбираться,но честно говоря все равно ОЧЕНЬ-ОЧЕНЬ хочется узнать алгоритм пошагового создания этих файлов.
KeyGen
384 / 291 / 6
Регистрация: 07.08.2011
Сообщений: 789
Записей в блоге: 1
14.08.2012, 22:59 #19
Стоит Kubuntu. Что за чудеса?
Миниатюры
Раздельная компиляция ошибка LNK2019  
Aliru777
1 / 1 / 0
Регистрация: 03.11.2011
Сообщений: 71
14.08.2012, 23:09  [ТС] #20
У меня опять ошибки те же.
А как поучается main.cpp, prata_9_1_ex.cpp и prata_9_1_ex.h вместе?
То есть как Вы их собрали?
У меня файлы так называются:
prata 9 include.cpp это тот где
C++
1
_tmain
и prata 9-1 include 2.cpp где описание функции show_XY
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
14.08.2012, 23:31 #21

Не по теме:

Цитата Сообщение от KeyGen Посмотреть сообщение
Стоит Kubuntu. Что за чудеса?
Чудеса и есть чудеса. Необъяснимое явление.



Добавлено через 8 минут
Цитата Сообщение от Aliru777 Посмотреть сообщение
У меня опять ошибки те же.
А как поучается main.cpp, prata_9_1_ex.cpp и prata_9_1_ex.h вместе?
То есть как Вы их собрали?
У меня файлы так называются:
prata 9 include.cpp это тот где
C++
1
_tmain
и prata 9-1 include 2.cpp где описание функции show_XY
Действуйте по порядку и проблем не будет. Называйте файлы как угодно. В файл с расширением .h поместите прототип структуры и прототип функции. В файл с расширением .cpp поместите реализацию функции. В этом файле сделайте #include заголовочного файла с прототипами и #include <iostream>. В третьем файле, с расширением .cpp, поместите функцию main(). Сделайте в нём #include заголовочного файла с прототипами, #include <iostream> и можно ещё using namespace std; Должно работать. Какая у вас IDE?
Aliru777
1 / 1 / 0
Регистрация: 03.11.2011
Сообщений: 71
14.08.2012, 23:39  [ТС] #22
visual studio 2005
сейчас все удалил, попробую сделать заново по порядку...
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
14.08.2012, 23:45 #23
Скрины для ориентировки.
Миниатюры
Раздельная компиляция ошибка LNK2019   Раздельная компиляция ошибка LNK2019   Раздельная компиляция ошибка LNK2019  

Aliru777
1 / 1 / 0
Регистрация: 03.11.2011
Сообщений: 71
15.08.2012, 00:06  [ТС] #24
я понимаю я вообще дурак, но все таки у меня снова ошибки такие же
Миниатюры
Раздельная компиляция ошибка LNK2019   Раздельная компиляция ошибка LNK2019   Раздельная компиляция ошибка LNK2019  

Avazart
Эксперт С++
7148 / 5325 / 276
Регистрация: 10.12.2010
Сообщений: 23,566
Записей в блоге: 17
15.08.2012, 00:11 #25
Если пользуешься IDE руками файлы создавать не стоит ... только через IDE... - это во первых
А во вторых
C++
1
#include <iostream>  // - скобки!!
Добавлено через 1 минуту
В третьих http://we.easyelectronics.ru/Soft/ra...iya-v-s-s.html
Aliru777
1 / 1 / 0
Регистрация: 03.11.2011
Сообщений: 71
15.08.2012, 00:18  [ТС] #26
1.это как?
2.ок
3.читал правда не совсем понял - банка кофе, бёрн закончились и я уже ... от этой радости)))
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
15.08.2012, 00:19 #27
В дереве, слева, откройте, чтобы были видны файлы проекта. Я вижу файлы, но не вижу, присутствуют ли они в проекте. Вот так, чтобы было.
Миниатюры
Раздельная компиляция ошибка LNK2019  
DU
1483 / 1059 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
15.08.2012, 00:21 #28
что-то я не уверен, что студия просто так начнет обрабатывать все подряд объектные файлы какие увидит в надежде найти там нужные функции. без правки проектных файлов наверно ничего не получится даже при наличии нужного объектного файла рядом с остальными.
а если файлы будут в проекте - то это уже не совсем раздельная компиляция.
Avazart
Эксперт С++
7148 / 5325 / 276
Регистрация: 10.12.2010
Сообщений: 23,566
Записей в блоге: 17
15.08.2012, 00:23 #29
1.это как?
Файл - Создать - Файл(Ctrl+N) ....

Добавлено через 1 минуту
- то это уже не совсем раздельная компиляция.
Это почему же?
Компилятору нужно же знать какие файлы компилить ?
Для этого Make-файлы пишут, но для IDE эта инфа хранится в файле проекта...поэтому и создавать файлы надо через саму IDE
Aliru777
1 / 1 / 0
Регистрация: 03.11.2011
Сообщений: 71
15.08.2012, 00:28  [ТС] #30
так я так и создвал но они не вместе.
еще раз прочиталhttp://we.easyelectronics.ru/Soft/ra...iya-v-s-s.html но ответ не нашел или не понял,...не знаю
Миниатюры
Раздельная компиляция ошибка LNK2019  
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.08.2012, 00:28
Привет! Вот еще темы с ответами:

Шаблоны и раздельная компиляция - C++
Здравствуйте! Если просто я пишу класс, например: class Test { private: int *pm; ... public: bool inc();

Раздельная компиляция ( Code blocks) - C++
версия 16.01 при вызове функции из другого файла, стал писать, что я не указал прототип функции и &quot;ld returned 1 exit status&quot;. хотя делал...

Раздельная компиляция шаблонов классов - C++
При разделении шаблона класса на .h и .cpp линковщик ругается. Неужели в C++17 ещё не пофиксили это недоразумение и придётся писать всё в...

Создание классов в С++. Раздельная компиляция - C++
При создании класса C++ в VS создается два файла, &quot;&lt;имя_класса&gt;.h&quot; и &quot;&lt;имя_класса&gt;.cpp&quot;, зачем они ? В каком сам класс писать? Простите за...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
15.08.2012, 00:28
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru