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

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

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.63
Aliru777
0 / 0 / 0
Регистрация: 03.11.2011
Сообщений: 71
14.08.2012, 15:54     Раздельная компиляция ошибка LNK2019 #1
Создал 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++
раздельная компиляция C++
Раздельная компиляция и шаблоны C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
14.08.2012, 16:05     Раздельная компиляция ошибка LNK2019 #2
Aliru777,
C++
1
2
3
4
void show_XY(xy)
{
    cout<<xy.i_x<<"\t"<<xy.i_y<<"\n";
}
Параметр xy, а его тип?
Должно быть (как я понял) :
C++
1
void show_XY(XY xy)
Aliru777
0 / 0 / 0
Регистрация: 03.11.2011
Сообщений: 71
14.08.2012, 16:10  [ТС]     Раздельная компиляция ошибка LNK2019 #3
Да, это пропустил но ошибки все равно на месте
Там где описание функции такое пишет:
Error 1 error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup MSVCRTD.lib
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
14.08.2012, 16:17     Раздельная компиляция ошибка LNK2019 #4
Aliru777,
попробуй ещё
#include <tchar.h>
Мне помнится, что tmain-функция там лежит, но не уверен

Так же вопрос в том, где описана функция show? Ато я не вижу в include'ах что-то, что могло бы говорить о том, что она подключена?
Aliru777
0 / 0 / 0
Регистрация: 03.11.2011
Сообщений: 71
14.08.2012, 17:10  [ТС]     Раздельная компиляция ошибка LNK2019 #5
Цитата Сообщение от nexen Посмотреть сообщение
Так же вопрос в том, где описана функция show? Ато я не вижу в include'ах что-то, что могло бы говорить о том, что она подключена?
А как это сделать?
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
14.08.2012, 18:46     Раздельная компиляция ошибка LNK2019 #6
Файл с описанием функции .cpp?
Aliru777
0 / 0 / 0
Регистрация: 03.11.2011
Сообщений: 71
14.08.2012, 18:48  [ТС]     Раздельная компиляция ошибка LNK2019 #7
в смысле?
Avazart
 Аватар для Avazart
6900 / 5140 / 252
Регистрация: 10.12.2010
Сообщений: 22,584
Записей в блоге: 17
14.08.2012, 18:48     Раздельная компиляция ошибка LNK2019 #8
http://msdn.microsoft.com/ru-ru/library/799kze2z.aspx
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
14.08.2012, 19:01     Раздельная компиляция ошибка LNK2019 #9
Цитата Сообщение от Aliru777 Посмотреть сообщение
в смысле?
В проекте, файл с реализацией функции show_XY(), какое расширение имеет? Среда какая? #include <tchar.h> сделали?
KeyGen
 Аватар для KeyGen
333 / 289 / 6
Регистрация: 07.08.2011
Сообщений: 789
Записей в блоге: 1
14.08.2012, 19:22     Раздельная компиляция ошибка LNK2019 #10
1
C++
1
#include "prata _9_1_ex.h"
- пробел убери
2 Каждая программа должна содержать обязательно функцию main
3 Зачем столько подключенных библиотек? Тут вроде хватит #include <iostream>
4 Не используй using namespace std; , а если пишешь то зачем в каждом файле? Пиши в Header file
zss
Модератор
Эксперт С++
 Аватар для zss
5943 / 5548 / 1783
Регистрация: 18.12.2011
Сообщений: 14,167
Завершенные тесты: 1
14.08.2012, 19:25     Раздельная компиляция ошибка LNK2019 #11
А Вы точно оба файла (с main и с функцией)подключили к проекту?
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
14.08.2012, 19:27     Раздельная компиляция ошибка LNK2019 #12
Aliru777, файл с описанием функции в проект добавлен?
KeyGen
 Аватар для KeyGen
333 / 289 / 6
Регистрация: 07.08.2011
Сообщений: 789
Записей в блоге: 1
14.08.2012, 20:03     Раздельная компиляция ошибка LNK2019 #13
prata_9_1_ex.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#ifndef PRATA_9_1_EX_H_INCLUDED
#define PRATA_9_1_EX_H_INCLUDED
 
using namespace std;
 
struct XY
{
 
    int i_x; // distance from origin
    int i_y; // direction from origin
 
};
 
void show_XY(XY);
 
#endif // PRATA_9_1_EX_H_INCLUDED
prata_9_1_ex.cpp
C++
1
2
3
4
5
6
#include "prata_9_1_ex.h"
 
void show_XY(XY xy)
{
    std::cout << xy.i_x << "\t" << xy.i_y<<"\n";
}
main
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include "prata_9_1_ex.h"
#include "prata_9_1_ex.cpp"
 
int main()
{
    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";
    }
 
    // system("pause");
    return 0;
}
Заработала! ))
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
14.08.2012, 20:34     Раздельная компиляция ошибка LNK2019 #14
Цитата Сообщение от KeyGen Посмотреть сообщение
#include "prata_9_1_ex.cpp"
Это-то зачем?

Добавлено через 14 минут
Компилятор mingv. Без этого:
C++
1
#include <iostream>
в файле prata_9_1_ex.cpp или prata_9_1_ex.h, не определяется cout в файле prata_9_1_ex.cpp. С этим :
C++
1
#include "prata_9_1_ex.cpp"
, множественное определение функции show_XY().
KeyGen
 Аватар для KeyGen
333 / 289 / 6
Регистрация: 07.08.2011
Сообщений: 789
Записей в блоге: 1
14.08.2012, 20:36     Раздельная компиляция ошибка LNK2019 #15
Цитата Сообщение от alsav22 Посмотреть сообщение
Цитата Сообщение от KeyGen Посмотреть сообщение
#include "prata_9_1_ex.cpp"
Это-то зачем?
Без него не пашет. А с ним:
Миниатюры
Раздельная компиляция ошибка LNK2019  
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
14.08.2012, 20:39     Раздельная компиляция ошибка LNK2019 #16
в h файлах писать using namespace std (и любые другие неймспейсы ) вредно. при включении такого файла в другие инклуды, туда также проникает этот юзинг, а это может привести к конфликту имен.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
14.08.2012, 20:46     Раздельная компиляция ошибка LNK2019 #17
Цитата Сообщение от DU Посмотреть сообщение
в h файлах писать using namespace std (и любые другие неймспейсы ) вредно. при включении такого файла в другие инклуды, туда также проникает этот юзинг, а это может привести к конфликту имен.
Солидарен.
Без него не пашет.
В mingv и MSVC 2010 всё замечательно пашет, а с ним - множественное определение.
Миниатюры
Раздельная компиляция ошибка LNK2019   Раздельная компиляция ошибка LNK2019  
Aliru777
0 / 0 / 0
Регистрация: 03.11.2011
Сообщений: 71
14.08.2012, 22:50  [ТС]     Раздельная компиляция ошибка LNK2019 #18
Cпасибо всем кто ответил - сейчас опять буду стараться понять.
Но...
Я так понимаю моя проблема в том,что я прочитал:
С.Прата 5 и 6(2011)
Дейтела
Лафоре
Шилдта
Инет и похожие темы на киберфоруме
...но везде тема описана вкратце - то есть - зачем это нужно - описано везде - и хорошо понятно, что это полезная вещь
Но как это сделать пошагово не описано
Есть как оказалось хедер файл - кто такой мэйн cpp?это просто там где функция мэйн?
Как соединять эти файлы м\у собой - я так и не понял.
Как пошагово это делать я вообще не понял
Мои действия:
1.создал хэдэр
2.создал файл описание функции скажем 1.0
3.создал мэйн 1.0.1
4.так как я не понял что не работает, я внес хэдэр в папки с 1.0 и 1.0.1
потом появилась ошибка о которой я писал - тепепь буду разбираться,но честно говоря все равно ОЧЕНЬ-ОЧЕНЬ хочется узнать алгоритм пошагового создания этих файлов.
KeyGen
 Аватар для KeyGen
333 / 289 / 6
Регистрация: 07.08.2011
Сообщений: 789
Записей в блоге: 1
14.08.2012, 22:59     Раздельная компиляция ошибка LNK2019 #19
Стоит Kubuntu. Что за чудеса?
Миниатюры
Раздельная компиляция ошибка LNK2019  
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.08.2012, 23:09     Раздельная компиляция ошибка LNK2019
Еще ссылки по теме:

C++ Раздельная компиляция
Создание классов в С++. Раздельная компиляция C++
Раздельная компиляция C++

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

Или воспользуйтесь поиском по форуму:
Aliru777
0 / 0 / 0
Регистрация: 03.11.2011
Сообщений: 71
14.08.2012, 23:09  [ТС]     Раздельная компиляция ошибка LNK2019 #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
Yandex
Объявления
14.08.2012, 23:09     Раздельная компиляция ошибка LNK2019
Ответ Создать тему
Опции темы

Текущее время: 04:44. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru