Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.63
Aliru777
1 / 1 / 4
Регистрация: 03.11.2011
Сообщений: 71
#1

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

14.08.2012, 15:54. Просмотров 2116. Ответов 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

Не пойму в чем проблема.
http://www.cyberforum.ru/cpp-beginners/thread1132614.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.08.2012, 15:54
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Раздельная компиляция ошибка LNK2019 (C++):

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

раздельная компиляция
Вот есть три файла: заголовочный файл с классом (.h), файл с реализацией...

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

Шаблоны и раздельная компиляция
Здравствуйте! Если просто я пишу класс, например: class Test { private:...

Раздельная компиляция файлов
Если класс определен в раздельных файлах и изменения сделаны в части main...

45
nexen
187 / 180 / 25
Регистрация: 27.01.2012
Сообщений: 1,335
14.08.2012, 16:05 #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)
1
Aliru777
1 / 1 / 4
Регистрация: 03.11.2011
Сообщений: 71
14.08.2012, 16:10  [ТС] #3
Да, это пропустил но ошибки все равно на месте
Там где описание функции такое пишет:
Error 1 error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup MSVCRTD.lib
0
nexen
187 / 180 / 25
Регистрация: 27.01.2012
Сообщений: 1,335
14.08.2012, 16:17 #4
Aliru777,
попробуй ещё
#include <tchar.h>
Мне помнится, что tmain-функция там лежит, но не уверен

Так же вопрос в том, где описана функция show? Ато я не вижу в include'ах что-то, что могло бы говорить о том, что она подключена?
0
Aliru777
1 / 1 / 4
Регистрация: 03.11.2011
Сообщений: 71
14.08.2012, 17:10  [ТС] #5
Цитата Сообщение от nexen Посмотреть сообщение
Так же вопрос в том, где описана функция show? Ато я не вижу в include'ах что-то, что могло бы говорить о том, что она подключена?
А как это сделать?
0
alsav22
5438 / 4833 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
14.08.2012, 18:46 #6
Файл с описанием функции .cpp?
0
Aliru777
1 / 1 / 4
Регистрация: 03.11.2011
Сообщений: 71
14.08.2012, 18:48  [ТС] #7
в смысле?
0
Avazart
Эксперт С++
7674 / 5583 / 541
Регистрация: 10.12.2010
Сообщений: 25,046
Записей в блоге: 17
14.08.2012, 18:48 #8
http://msdn.microsoft.com/ru-ru/library/799kze2z.aspx
1
alsav22
5438 / 4833 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
14.08.2012, 19:01 #9
Цитата Сообщение от Aliru777 Посмотреть сообщение
в смысле?
В проекте, файл с реализацией функции show_XY(), какое расширение имеет? Среда какая? #include <tchar.h> сделали?
0
KeyGen
384 / 291 / 21
Регистрация: 07.08.2011
Сообщений: 790
Записей в блоге: 1
14.08.2012, 19:22 #10
1
C++
1
#include "prata _9_1_ex.h"
- пробел убери
2 Каждая программа должна содержать обязательно функцию main
3 Зачем столько подключенных библиотек? Тут вроде хватит #include <iostream>
4 Не используй using namespace std; , а если пишешь то зачем в каждом файле? Пиши в Header file
0
zss
Модератор
Эксперт С++
6953 / 6515 / 4136
Регистрация: 18.12.2011
Сообщений: 17,184
Завершенные тесты: 1
14.08.2012, 19:25 #11
А Вы точно оба файла (с main и с функцией)подключили к проекту?
0
kazak
3057 / 2378 / 255
Регистрация: 11.03.2009
Сообщений: 5,438
Завершенные тесты: 1
14.08.2012, 19:27 #12
Aliru777, файл с описанием функции в проект добавлен?
0
KeyGen
384 / 291 / 21
Регистрация: 07.08.2011
Сообщений: 790
Записей в блоге: 1
14.08.2012, 20:03 #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;
}
Заработала! ))
1
alsav22
5438 / 4833 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
14.08.2012, 20:34 #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().
0
KeyGen
384 / 291 / 21
Регистрация: 07.08.2011
Сообщений: 790
Записей в блоге: 1
14.08.2012, 20:36 #15
Цитата Сообщение от alsav22 Посмотреть сообщение
Цитата Сообщение от KeyGen Посмотреть сообщение
#include "prata_9_1_ex.cpp"
Это-то зачем?
Без него не пашет. А с ним:
0
Миниатюры
Раздельная компиляция ошибка LNK2019  
DU
1486 / 1132 / 164
Регистрация: 05.12.2011
Сообщений: 2,279
14.08.2012, 20:39 #16
в h файлах писать using namespace std (и любые другие неймспейсы ) вредно. при включении такого файла в другие инклуды, туда также проникает этот юзинг, а это может привести к конфликту имен.
2
alsav22
5438 / 4833 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
14.08.2012, 20:46 #17
Цитата Сообщение от DU Посмотреть сообщение
в h файлах писать using namespace std (и любые другие неймспейсы ) вредно. при включении такого файла в другие инклуды, туда также проникает этот юзинг, а это может привести к конфликту имен.
Солидарен.
Без него не пашет.
В mingv и MSVC 2010 всё замечательно пашет, а с ним - множественное определение.
2
Миниатюры
Раздельная компиляция ошибка LNK2019   Раздельная компиляция ошибка LNK2019  
Aliru777
1 / 1 / 4
Регистрация: 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
потом появилась ошибка о которой я писал - тепепь буду разбираться,но честно говоря все равно ОЧЕНЬ-ОЧЕНЬ хочется узнать алгоритм пошагового создания этих файлов.
0
KeyGen
384 / 291 / 21
Регистрация: 07.08.2011
Сообщений: 790
Записей в блоге: 1
14.08.2012, 22:59 #19
Стоит Kubuntu. Что за чудеса?
0
Миниатюры
Раздельная компиляция ошибка LNK2019  
Aliru777
1 / 1 / 4
Регистрация: 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
0
14.08.2012, 23:09
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.08.2012, 23:09
Привет! Вот еще темы с решениями:

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

Раздельная компиляция и шаблоны
привет. возьму вот такой выдуманный пример #ifndef CCLASS_H #define...

Раздельная компиляция ( Code blocks)
версия 16.01 при вызове функции из другого файла, стал писать, что я не указал...

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

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