Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.56/16: Рейтинг темы: голосов - 16, средняя оценка - 4.56
1 / 1 / 0
Регистрация: 03.11.2011
Сообщений: 71
1

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

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

Author24 — интернет-сервис помощи студентам
Создал 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

Не пойму в чем проблема.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.08.2012, 15:54
Ответы с готовыми решениями:

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

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

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

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

45
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
1 / 1 / 0
Регистрация: 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
187 / 180 / 25
Регистрация: 27.01.2012
Сообщений: 1,335
14.08.2012, 16:17 4
Aliru777,
попробуй ещё
#include <tchar.h>
Мне помнится, что tmain-функция там лежит, но не уверен

Так же вопрос в том, где описана функция show? Ато я не вижу в include'ах что-то, что могло бы говорить о том, что она подключена?
0
1 / 1 / 0
Регистрация: 03.11.2011
Сообщений: 71
14.08.2012, 17:10  [ТС] 5
Цитата Сообщение от nexen Посмотреть сообщение
Так же вопрос в том, где описана функция show? Ато я не вижу в include'ах что-то, что могло бы говорить о том, что она подключена?
А как это сделать?
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
14.08.2012, 18:46 6
Файл с описанием функции .cpp?
0
1 / 1 / 0
Регистрация: 03.11.2011
Сообщений: 71
14.08.2012, 18:48  [ТС] 7
в смысле?
0
Эксперт С++
8385 / 6147 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
14.08.2012, 18:48 8
http://msdn.microsoft.com/ru-r... kze2z.aspx
1
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
14.08.2012, 19:01 9
Цитата Сообщение от Aliru777 Посмотреть сообщение
в смысле?
В проекте, файл с реализацией функции show_XY(), какое расширение имеет? Среда какая? #include <tchar.h> сделали?
0
387 / 294 / 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
Модератор
Эксперт С++
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,713
14.08.2012, 19:25 11
А Вы точно оба файла (с main и с функцией)подключили к проекту?
0
3528 / 2686 / 334
Регистрация: 11.03.2009
Сообщений: 6,168
14.08.2012, 19:27 12
Aliru777, файл с описанием функции в проект добавлен?
0
387 / 294 / 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
5498 / 4893 / 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
387 / 294 / 21
Регистрация: 07.08.2011
Сообщений: 790
Записей в блоге: 1
14.08.2012, 20:36 15
Цитата Сообщение от alsav22 Посмотреть сообщение
Цитата Сообщение от KeyGen Посмотреть сообщение
#include "prata_9_1_ex.cpp"
Это-то зачем?
Без него не пашет. А с ним:
Миниатюры
Раздельная компиляция ошибка LNK2019  
0
DU
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
14.08.2012, 20:39 16
в h файлах писать using namespace std (и любые другие неймспейсы ) вредно. при включении такого файла в другие инклуды, туда также проникает этот юзинг, а это может привести к конфликту имен.
2
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
14.08.2012, 20:46 17
Цитата Сообщение от DU Посмотреть сообщение
в h файлах писать using namespace std (и любые другие неймспейсы ) вредно. при включении такого файла в другие инклуды, туда также проникает этот юзинг, а это может привести к конфликту имен.
Солидарен.
Без него не пашет.
В mingv и MSVC 2010 всё замечательно пашет, а с ним - множественное определение.
Миниатюры
Раздельная компиляция ошибка LNK2019   Раздельная компиляция ошибка LNK2019  
2
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
потом появилась ошибка о которой я писал - тепепь буду разбираться,но честно говоря все равно ОЧЕНЬ-ОЧЕНЬ хочется узнать алгоритм пошагового создания этих файлов.
0
387 / 294 / 21
Регистрация: 07.08.2011
Сообщений: 790
Записей в блоге: 1
14.08.2012, 22:59 19
Стоит Kubuntu. Что за чудеса?
Миниатюры
Раздельная компиляция ошибка LNK2019  
0
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
0
14.08.2012, 23:09
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.08.2012, 23:09
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru