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

Ошибка линковки - C++

Восстановить пароль Регистрация
 
Aleks_
0 / 0 / 0
Регистрация: 15.05.2011
Сообщений: 12
24.05.2011, 23:01     Ошибка линковки #1
Здравствуйте. Создаю многофайловую программу. При компиляции всё замечательно, а потом возникает следующая ошибка:

Error 2 error LNK2019: unresolved external symbol "double __cdecl integrals(double,double,int,double (__cdecl*)(double),double (__cdecl*)(double,double,double (__cdecl*)(double)))" (?integrals@@YANNNHP6ANN@ZP6ANNN0@Z@Z) referenced in function _main

Полазила по сайтам, нашла, что такая ошибка может быть вызвана тем, что второй ccp файл не подключён, скопировала тела функции в главный файл, не помогло. Не подскажите, чем ещё может быть вызвана такая ошибка? Если нужен код программы, я выложу. Заранее спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.05.2011, 23:01     Ошибка линковки
Посмотрите здесь:

Ошибка линковки C++
C++ Шаблонный класс, ошибка линковки
C++ Ошибка линковки
ошибка линковки C++
C++ Ошибка линковки
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,131
24.05.2011, 23:09     Ошибка линковки #2
Такая ошибка иногда бывает, когда в прототипе\в скобках при вызове функции \в заголовке есть лишние символы.
pito211
 Аватар для pito211
186 / 173 / 8
Регистрация: 22.03.2010
Сообщений: 612
25.05.2011, 05:22     Ошибка линковки #3
Цитата Сообщение от Aleks_ Посмотреть сообщение
Если нужен код программы
нужен
Aleks_
0 / 0 / 0
Регистрация: 15.05.2011
Сообщений: 12
25.05.2011, 08:47  [ТС]     Ошибка линковки #4
Основной
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include "stdafx.h"
#include "Head1.h"
#include "iostream"
#include "cmath"
#include "conio.h"
#include "stdio.h"
#include "stdlib.h"
 
 
 
void main()
{
   double a=0;
   double b=0;
   int n=0;
   cout<<'a';
   cin>>a;
   cout<<'b';
   cin>>b;
   cout<<'n';
   cin>>n;
   double s=0;
   int m=3;
 
switch(m){
case '1':{
    s+=integrals(a,b,n,f,rect);
    }
    break;
 
case '2':{
    s+=integrals(a,b,n,f,trap);
    }
    break;
 
case '3':{
    s+=integrals(a,b,n,f,Simpson);
    }
    break;
 
}
cout<<s;
getch();
}
Файл с функциями
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include "stdafx.h"
#include "iostream"
#include "cmath"
#include "conio.h"
#include "Head1.h"
#include "stdio.h"
#include "stdlib.h"
 
 
using namespace std;
 
 
double f(double x){
    double y=sqrt(1-x*x)*4;
    return (y);
}
 
double rect(double a, double b, Tpf pf){
    double s=(b-a)*pf((a+b)/2);
    return (s);
}
 
double trap(double a, double b, Tpf pf){
    double s=(b-a)/2*(pf(a)+pf(b));
    return (s);
}
 
double Simpson(double a, double b, Tpf pf){
    double s=(b-a)/6*(pf(a)+4*pf((a+b)/2)+pf(b));
    return (s);
}
 
double integrals(double a, double b, int n, Tpf pf, Tpmethod pmethod){
    double h=(b-a)/n;
    double s=0;
    for (int i=0; i<n; i++){
        double l=a+h*i;
        double r=l+h;
        s+=pmethod(l,r,pf);
    }
    return s;
}
Заголовочный
C++
1
2
3
4
5
6
7
8
9
10
#pragma once
#include "cmath"
typedef double(*Tpf)(double);
double f(double x);
typedef double(*Tpmethod)(double, double, Tpf);
typedef double (*integ)(double, double, int, Tpf, Tpmethod);
double rect(double a, double b, Tpf);
double trap(double a, double b, Tpf pf);
double Simpson(double a, double b, Tpf pf);
double integrals(double a, double b, int n, Tpf pf, Tpmethod pmethod);
Добавлено через 10 минут
Всем спасибо, ошибка устранена. Только switch не работает...
dihlofos
Бродяга
 Аватар для dihlofos
302 / 256 / 17
Регистрация: 27.08.2010
Сообщений: 553
25.05.2011, 09:34     Ошибка линковки #5
Цитата Сообщение от Aleks_ Посмотреть сообщение
Только switch не работает...
C++
1
2
3
4
5
6
case 1:
.....
case 2:
.....
case 3:
.....
Без кавычек, т.к. '3' и 3 - это разные значения.
Aleks_
0 / 0 / 0
Регистрация: 15.05.2011
Сообщений: 12
25.05.2011, 09:53  [ТС]     Ошибка линковки #6
Спасибо. Всё работает, только вместо значения мне выводиться -1.#IND
Что это значит?
pito211
 Аватар для pito211
186 / 173 / 8
Регистрация: 22.03.2010
Сообщений: 612
25.05.2011, 10:26     Ошибка линковки #7
double y=sqrt(1-x*x)*4;
в этой строчке возникает, потому что корня чётной степени из отрицательно числа нету
Aleks_
0 / 0 / 0
Регистрация: 15.05.2011
Сообщений: 12
25.05.2011, 10:27  [ТС]     Ошибка линковки #8
Спасибо!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.05.2011, 10:31     Ошибка линковки
Еще ссылки по теме:

C++ Ошибка линковки. Глобальные переменные
C++ Ошибка линковки в многофайловом проекте
C++ Непонятная ошибка линковки

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

Или воспользуйтесь поиском по форуму:
pito211
 Аватар для pito211
186 / 173 / 8
Регистрация: 22.03.2010
Сообщений: 612
25.05.2011, 10:31     Ошибка линковки #9
на будущее: есть такая штука Debbuger,обычно он встроен в IDE, им легко можно найти причину ошибки
Yandex
Объявления
25.05.2011, 10:31     Ошибка линковки
Ответ Создать тему
Опции темы

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