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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.60
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
#1

1>8-1.obj : error LNK2019: ссылка на неразрешенный внешний символ "double __cdecl max5<double>(double * const,int)" (??$max5@N@@YANQANH@Z) в функции _main - C++

20.09.2011, 23:39. Просмотров 1318. Ответов 0
Метки нет (Все метки)

Попробовал разделить один файл на два. В заголовочный "proba.h" поместил шаблон и специализацию. В одном файле исходного кода оставил функцию main(), а во второй поместил определения шаблона и специализации.

Заголовочный файл "proba.h":
C++
1
2
3
template <class T>
T max5(T m[], int x);
template <> const char* max5(const char* m[], int x);
Первый файл:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
using namespace std;
#include "proba.h"
 
int main()
{
     int t[6] = {777, 34, 34, 66, 777, 1234};
     int l = max5(t, 6);
     cout << l << endl;
 
    double t2[4] = {7.98, 7.90, 3.676, 6.56};
    double l2 = max5(t2, 4);
    cout << l2 << endl;
    
    const char* uk[4] = {"sd","987654321", "qwertyu", "123456789"};
    const char* n = max5(uk, 4);
    cout << &n << "  " << n <<  endl;
    
    system ("pause");
    return 0;
}
Второй файл:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <iostream>
using namespace std;
#include "proba.h"
 
template <> const char* max5<const char*>( const char* m[], int x)
{
    int n = 0;
    unsigned int p = strlen (m[0]);
    for (int i = 1; i < x; i++)
    if (p < strlen (m[i]))
    {
        p = strlen (m[i]);
        n = i;
    }
 
    return m[n];
}   
 template <class T>
 T max5(T m[], int x)
{
    T p = m[0];
    for (int i = 1; i < x; i++)
    { 
        if (p < m[i]) p = m[i];
    }       
    return p;   
}
При постоении выдаёт ошибки:
1>------ Построение начато: проект: 8-1, Конфигурация: Debug Win32 ------
1> 8-1.cpp
1> Создание кода...
1> Компиляция...
1> 8-2.cpp
1> Создание кода...
1>8-1.obj : error LNK2019: ссылка на неразрешенный внешний символ "double __cdecl max5<double>(double * const,int)" (??$max5@N@@YANQANH@Z) в функции _main
1>8-1.obj : error LNK2019: ссылка на неразрешенный внешний символ "int __cdecl max5<int>(int * const,int)" (??$max5@H@@YAHQAHH@Z) в функции _main
1>D:\MY C++Projects\8-4-5\Debug\8-1.exe : fatal error LNK1120: 2 неразрешенных внешних элементов
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========

Подскажите, пожалуйста, что не так сделал?

Добавлено через 2 часа 47 минут
Наверное, нельзя разделять прототип шаблона и определение шаблона? Для функции можно, а для шаблона нет?

Добавлено через 2 минуты
И то, и другое поместить в заголовочный файл?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.09.2011, 23:39
Здравствуйте! Я подобрал для вас темы с ответами на вопрос 1>8-1.obj : error LNK2019: ссылка на неразрешенный внешний символ "double __cdecl max5<double>(double * const,int)" (??$max5@N@@YANQANH@Z) в функции _main (C++):

error LNK2019: ссылка на неразрешенный внешний символ "public: int __thiscall KDocument::Open(char const *)" в функции _WinMain@16 - C++
ребята, при компиляции линковщик ругается, подскажите пожалуйста , вроде бы и Kdocument.h импортирован, не знаю в чем дело// HexBeta.cpp :...

error LNK2019: ссылка на неразрешенный внешний символ "public: __thiscall Vector<int>::Vector<int>(void)" (?0?$Vector@H@@QAE@XZ) в функции _main - C++
//Vector.h #include &lt;iostream&gt; #include &lt;Windows.h&gt; #include &lt;climits&gt; #include &lt;vector&gt; #include &lt;stdlib.h&gt; #include &lt;fstream&gt;...

Ошибка: error LNK2001: unresolved external symbol "double __cdecl Akk(double,double,double)" - C++
#include &lt;iostream&gt; #include &lt;cmath&gt; using namespace std; double Akk(double x, double y, double z); int main() { int a, b, c; ...

Ошибки error C2296: -: недопустимо, левый операнд имеет тип "double (__cdecl *)(double,double,double - C++
Думаю из-за polp #include&lt;iostream&gt; #include&lt;cmath&gt; #include&lt;cstdlib&gt; using namespace std; double polp(double af,double...

Ошибка LNK2019 ссылка на неразрешенный внешний символ _main в функции "int __cdecl invoke_main(void)" - C++
В текстовый файл вставить пробелы таким образом, чтобы каждая строка имела длину 80 символов (пробелы в строке должны быть вставлены...

Error LNK2019: "ссылка на неразрешенный внешний символ _main" - C++
1&gt;MSVCRTD.lib(crtexe.obj) : error LNK2019: ссылка на неразрешенный внешний символ _main в функции ___tmainCRTStartup ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.09.2011, 23:39
Привет! Вот еще темы с ответами:

Ошибка в приложении: "error LNK2019: ссылка на неразрешенный внешний символ" - C++
Создал консольное приложение и в него добавил код: #include &quot;afxwin.h&quot; // MFC Основные и стандартные компоненты class CMainWnd :...

Найти причины и способы исправления ошибки "error LNK2019: ссылка на неразрешенный внешний символ" - C++
Добрый день! Подскажите пожалуйста, писала программу. Но при компиляции выдает ошибку: error LNK1120: неразрешенных внешних...

Ошибка при отображении русских шрифтов в консоли: "error LNK2019: ссылка на неразрешенный внешний символ" - C++
Доброго времени суток! решил модернизировать простенькую программу, чтобы отображался русский шрифт в консоли, делаю согласно книги, но не...

Исправить ошибку "LNK2019: ссылка на неразрешенный внешний символ _main в функции ___tmainCRTStartup" - C++
#include &quot;stdafx.h&quot; #include &quot;расчет.h&quot; #include &quot;conio.h&quot; #include &lt;windows.h&gt; #include &lt;commctrl.h&gt; #include &lt;iostream&gt; ...


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

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

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